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] ofstring; {предметов берем 5}
Mark:array [1..5] of integer; end;
studrec=recordname:string; end;
sub=danni;
var student:array [1..8] of studrec;
am:array [1..8] ofstring;
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:=1to2dobegin s:=0; {возьмем к примеру два студента}with student[i] dobegin
readln(f, name);
for k:=1to5dobeginwith sub dobegin{А вот тут выдает что просит поставить "(" но зачем???)}
readln(f2,predmet[k]); end;
if student[i].danni.mark[k]=2then
s:=s+1; end;
if s=5thenbegin n:=n+1;
am1[n]:=student[i].name;
writeln(f1, am1[n]); end; end; end.
_____ З.Ы.Кстати курсовую я сдал, и все благодаря Вам!
А вот тут выдает что просит поставить "(" но зачем???)
Все правильно выдает... У тебя же Sub это не переменная какого-то типа, а само описание типа. И ты не имеешь права его использовать в программе (за одним исключением, только для того, чтобы привести какую - либо переменную к типу Sub). Вот как раз для приведения нужно, чтобы следом за идентификатором типа в скобках шло имя переменной... Поэтому у тебя и просят скобку.
Выход один - объяви переменную типа Sub, и работай с ней...
В общем, как я говорл, благодаря Вам я сдал курсач =). А вот мой друг не сдал, почему то не пашит процедура решения интеграла, выдает ошибку 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;
beginif Abs(x) = 1then ArcSin:=0else
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.9dobegin
y:=ArcSin(sqrt(x))/sqrt(x*(1-x));
PutPixel(round(x*155)+350,round(y*155), 4);
x:=x+0.00125;
end; repeatuntil 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:=1to8dobegin 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/2dobeginif 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;
beginfor i:= 1to8dobeginif i>=6thenbegin
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:=2to n do
summa1:=summa1+2*y[k];
int:=(h/2)*(y[1]+summa1+y[n+1]);
for w:=2to n-1dobegin
b:=w mod2;
if b=0then
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:=2to (n+1) dobegin
ci[i]:=ci[i-1]+h;
for i:=1to (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:=1to (n+1) do mi[i]:=f(ci[i]); { Деление на 0 как минимум тебе обеспечено... }
1 - то, что у тебя ОПЯТЬ неверно расставлены скобки begin ... end. На этот раз - здесь:
for i:=2to (n+1) do{ begin }{ <-- Убрать begin }
ci[i]:=ci[i-1]+h;
for i:=1to (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); { <--- Убери эту строку }
...