1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Что бы не создавать оттельную тему прошу помоч еще с одной прогой для друга. Задание Составить прогу котороя будет печатать имена студентов и предмет с которого получено "2". _____ Прогу я наисал, но почему то она не пашит =) В обшем, помогите довести прогу до рабочего состояния. Перваую ошибку смотрите в коментариях.
program tp14; uses crt; type danni=record predmet:array [1..5] of string; {предметов берем 5} Mark:array [1..5] of integer; end; studrec=record name:string; end; sub=danni; var student:array [1..8] of studrec; am:array [1..8] of string; k,s,i,n,f,r:integer; min:string; f2,f1:text; Begin assign (f2, 'dano.pas');reset(f2); assign(f1,'rez.pas'); rewrite(f1); n:=0; for i:=1 to 2 do begin s:=0; {возьмем к примеру два студента} with student[i] do begin readln(f, name); for k:=1 to 5 do begin with sub do begin {А вот тут выдает что просит поставить "(" но зачем???)} readln(f2,predmet[k]); end; if student[i].danni.mark[k]=2 then s:=s+1; end; if s=5 then begin n:=n+1; am1[n]:=student[i].name; writeln(f1, am1[n]); end; end; end.
_____ З.Ы.Кстати курсовую я сдал, и все благодаря Вам!
А вот тут выдает что просит поставить "(" но зачем???)
Все правильно выдает... У тебя же Sub это не переменная какого-то типа, а само описание типа. И ты не имеешь права его использовать в программе (за одним исключением, только для того, чтобы привести какую - либо переменную к типу Sub). Вот как раз для приведения нужно, чтобы следом за идентификатором типа в скобках шло имя переменной... Поэтому у тебя и просят скобку.
Выход один - объяви переменную типа Sub, и работай с ней...
А прога выдет только одно "down" и все... А вот прога сама
program tp14; {Vykonav Kravets Artem} uses crt; type danni=record predmet:array [1..5] of string; Mark:array [1..5] of integer; end; studrec=record name:string; sub:danni; end; var student:array [1..8] of studrec; sub:array [1..5] of danni; am1:array [1..8] of string; am:array [1..8] of string; k,s,i,n,f,r:integer; min:string; f2,f1:text; Begin assign (f2, 'dano.pas');reset(f2); assign(f1,'rez.pas'); rewrite(f1); n:=0; for i:=1 to 2 do begin s:=0; with student[i] do begin readln(f2, name); for k:=1 to 5 do begin with sub do begin readln(f2,predmet[k]); readln(f2,mark[k]); end; if student[i].sub.mark[k]=2 then s:=s+1; end; if s=5 then begin n:=n+1; am1[n]:=student[i].name; writeln(f1, am1[n]); end; end; end;close(f1); end.
uses crt; type danni=record predmet:array [1..5] of string; Mark:array [1..5] of integer; end; studrec=record name:string; sub:danni; end; var student:array [1..8] of studrec; sub:array [1..5] of danni; am1:array [1..8] of string; am:array [1..8] of string; k,s,i,n,f,r,j:integer; min:string; f2,f1:text; Begin assign (f2, 'dano.pas'); reset(f2); assign(f1,'rez.pas'); rewrite(f1); n:=0; for i:=1 to 2 do begin s:=0; with student[i] do begin readln(f2, name); for k:=1 to 5 do begin with sub do begin readln(f2,predmet[k]); readln(f2,mark[k]); end; if student[i].sub.mark[k]=2 then begin s:=s+1; am1[s] := student[i].sub.predmet[k]; if s > 0 then begin writeln(f1, student[i].name); end; for j := 1 to s do writeln(f1, am1[j]); end; end; end; end; close(f1); end.
А выводит мне вот такое
Grisha pr4 down pr1 down pr1 pr2 down pr1 pr2 pr3 down pr1 pr2 pr3 pr4 down pr1 pr2 pr3 pr4 pr5
В общем, как я говорл, благодаря Вам я сдал курсач =). А вот мой друг не сдал, почему то не пашит процедура решения интеграла, выдает ошибку Invalid floating operation 207 А в окне пишит Runtime error 207 at 000F:0003 ____ помогите разобратся в чем проблемка.... Интеграл там рещается двумя способами, способом парралелограмма и Симпсона.
program kursova_robota_PM_41_7_variant; {Vykonav Schutskiy Pavlo} uses graph,crt; type vekt=array[1..1000] of real; var n:integer; h,itg,g,t,int1,int2,s1,sh,intg,intgs:real; NN,NK,i:integer; w:text; ci,mi:vekt; const a=0.2; b=0.3; {_______________________________________} function ArcSin(x:real):real; begin if Abs(x) = 1 then ArcSin:=0 else ArcSin:=ArcTan(x/(1-sqr(x))); end; {---------------------------------------------------------------------------}
function f(x:real):real; begin f:=ArcSin(sqrt(x))/sqrt(x*(1-x)); end; {--------------------------------------------------------------------------}
procedure Grafika; var gd, gm: integer; x,y: real; begin gd:=detect; initgraph(gd, gm, ''); SetBkColor(white); SetColor(4); Line(0, 100, 640, 100); Line(320, 0, 320, 480); SetColor(green); outtextxy(50,10,'Kursova Robota'); outtextxy(420,10,'Grafik Funkcii'); outtextxy(50,20,'Vikonav Schutskiy Pavlo'); outtextxy(50,30,'PM-41'); PutPixel(320,240,0); outtextxy(325,245,'0'); x:=0.2; While x<=0.9 do begin y:=ArcSin(sqrt(x))/sqrt(x*(1-x)); PutPixel(round(x*155)+350,round(y*155), 4); x:=x+0.00125; end; repeat until keypressed; cleardevice; closegraph;end; {--------------------------------------------------------------------------} procedure Zn(x,h:real); var c:array[1..8] of real; i:integer; y:real; begin assign(w,'dan.pas'); rewrite(w); writeln(w,'Znachennya funcii dlya kojnogo z X'); x:=0.2; h:=0.0125; for i:=1 to 8 do begin x:=x+h; y:=ArcSin(sqrt(x))/sqrt(x*(1-x)); c[i]:=y; write(w,'f[',i,']=',c[i]:2 :3,' '); end;end; {--------------------------------------------------------------------------} procedure MaxMin(n:integer;h:real); var x,xStart,xStop,xmin,xmax:extended; begin writeln(w,''); writeln(w,'Znahodjennya MAX i MIN funcii:'); xStart:=0.2; xStop:=0.3; x:=xStart; xmax:=x; xmin:=x; while x<=xStop+h/2 do begin if f(x)>f(xmax) then xmax:=x; if f(x)<f(xmin) then xmin:=x; x:=x+h; end; writeln(w,'Maksumalne znachennya funcii=',f(xmax):2 :3); writeln(w,'Minimalne znachennya funcii=',f(xmin):2 :3); writeln(''); end; {----------------------------------------------------------------------} procedure Sum(x,h:real); var Sum,y:real; i:integer; c:array [1..8] of real; begin for i:= 1 to 8 do begin if i>=6 then begin sum:=sum+x; end; x:=x+h; end; writeln(w,'Summa=',sum:3:3);writeln(''); end; {------------------------------------------------------------------------} {nahogdenie integrala} procedure integral(x,y:vekt;var int,ints:real); var summa1,summa2,summa3,h:real;w,k,n,b:integer; begin summa1:=0; summa2:=0; summa3:=0; n:=8; h:=0.0125; w:=0;k:=0;n:=0;b:=0; for k:=2 to n do summa1:=summa1+2*y[k]; int:=(h/2)*(y[1]+summa1+y[n+1]); for w:=2 to n-1 do begin b:=w mod 2; if b=0 then summa2:=summa2+4*y[w] else summa3:=summa3+2*y[w]; end; ints:=(h/3)*(y[1]+summa2+summa3+4*y[n]+y[n+1]); end;
{--------------------------------------------------------------------------} Begin clrscr; Grafika; assign(w,'dan.pas');rewrite(w); n:=8; h:=0.0125; s1:=0.2; Zn(s1,h); MaxMin(n,h); Sum(s1,h); ci[1]:=0; n:=8; h:=0.0125; for i:=2 to (n+1) do begin ci[i]:=ci[i-1]+h; for i:=1 to (n+1) do mi[i]:=f(ci[i]); integral(ci,mi,intg,intgs); end; writeln(w,'Pershiy integral= ',intg:3 :3); writeln(w,'Drugiy integral= ',intgs:3 :3); reset(w); end.
function f(x:real):real; begin f:=ArcSin(sqrt(x))/sqrt(x*(1-x)); end; ... ci[1]:=0; for i:=1 to (n+1) do mi[i]:=f(ci[i]); { Деление на 0 как минимум тебе обеспечено... }
1 - то, что у тебя ОПЯТЬ неверно расставлены скобки begin ... end. На этот раз - здесь:
for i:=2 to (n+1) do { begin } { <-- Убрать begin } ci[i]:=ci[i-1]+h; for i:=1 to (n+1) do mi[i]:=f(ci[i]); integral(ci,mi,intg,intgs); { end; } { <-- Убрать end }
2 - файл открывается дважды и из-за этого вывод в файл работает некорректно:
procedure Zn(x,h:real); var c:array[1..8] of real; i:integer; y:real; begin assign(w,'dan.pas'); rewrite(w); { <--- Убери эту строку } ...