R
roobpass
Добрый день уважаемые программисты.
Прошу помочь мене с переводом программы с Pascal в C++. На Pascal составить программу могу (знаю этот язык еще с школы), а вот с С++ проблема.
Я не прошу написать за меня программу. Кто отзовется буду благодарен. Вот сама программа:
[codebox]uses crt;
var
yx,xy,l,v,p,ff,ay,by,x:array [0..10] of real;
y,a,b:array[0..10,0..1] of real;
i,n,o:integer;
c,d,h,k:real;
label
lap1;
begin
clrscr;
writeln('введите наивысший порядок производной не больше трех ');
readln;
if n=0 then begin
writeln('это прямолинейная зависимость и решается без метода Эйлера ');
goto lap1;end;
writeln('введите коэффициенты {a0,a1}');
for i:=0 to n do
readln(l);
if (n=1) and (l[1]=0) or (n=2) and (l[2]=0) or (n=3) and (l[3]=0) then begin
writeln('деление на ноль');
goto lap1;
end;
writeln('введите коэффициент при x');
readln(k);
writeln('введите отрезок ');
readln(c,d);
o:=5;
h:=abs(d-c)/o;
writeln('шаг=',h:1:1);
writeln('задайте начальные условия y(x)= ');
for i:=0 to n-1 do
readln(v);
if n=3 then begin
yx[0]:=v[0];
ay[0]:=v[1];
by[0]:=v[2];
p[0]:=(k*c-l[0]*v[0]-l[1]*v[1]-l[2]*v[2])/l[3];
x[0]:=c;
gotoxy(32,1);
write(' ');
gotoxy(32,2);
write(' x y a b ');
gotoxy(32,3);
write(' ',c:7:7,' ',yx[0]:7:7,' ',ay[0]:7:7,' ',by[0]:7:7,' ');
for i:=0 to o-1 do begin
x:=x+h/2;
y[i,1]:=yx+(h/2)*ay;
a[i,1]:=ay+(h/2)*by;
b[i,1]:=by+(h/2)*p;
ff:=(k*x-l[0]*y[i,1]-l[1]*a[i,1]-l[2]*b[i,1])/l[3];
xy:=x+h/2;
yx[i+1]:=yx+h*a[i,1];
ay[i+1]:=ay+h*b[i,1];
by[i+1]:=by+h*ff;
x[i+1]:=x+h/2;
p[i+1]:=(k*xy-l[0]*yx[i+1]-l[1]*ay[i+1]-l[2]*by[i+1])/l[3];
end;
for i:=0 to o-1 do begin
gotoxy(32,4+i);
write(' ',xy:7:7,' ',yx[i+1]:7:7,' ',ay[i+1]:7:7,' ',by[i+1]:7:7,' ');
end;
gotoxy(32,4+o);
write(' ');
end;
if n=2 then begin
x[0]:=c;
yx[0]:=v[0];
ay[0]:=v[1];
p[0]:=(k*c-l[0]*yx[0]-l[1]*v[1])/l[2];
gotoxy(32,1);
write(' ');
gotoxy(32,2);
write(' x y a ');
gotoxy(32,3);
write(' ',c:7:7,' ',yx[0]:7:7,' ',ay[0]:7:7,' ');
for i:=0 to o-1 do begin
x:=x+h/2;
y[i,1]:=yx+(h/2)*ay;
a[i,1]:=ay+(h/2)*p;
ff:=(k*x-l[0]*y[i,1]-l[1]*a[i,1])/l[2];
xy:=x+h/2;
yx[i+1]:=yx+h*a[i,1];
ay[i+1]:=ay+h*ff;
x[i+1]:=x+h/2;
p[i+1]:=(k*xy-l[0]*yx[i+1]-l[1]*ay[i+1])/l[2];
end;
for i:=0 to o-1 do begin
gotoxy(32,4+i);
write(' ',xy:7:7,' ',yx[i+1]:7:7,' ',ay[I+1]:7:7,' ');
end;
gotoxy(32,4+o);
write(' ');
end;
if n=1 then begin
x[0]:=c;
yx[0]:=v[0];
p[0]:=(k*x[0]-l[0]*yx[0])/l[1];
for i:=0 to o-1 do begin
x:=x+h/2;
y[i,1]:=yx+(h/2)*p;
xy:=x+h/2;
ff:=(k*x-l[0]*y[i,1])/l[1];
yx[i+1]:=yx+h*ff;
x[i+1]:=x+h/2;
p[i+1]:=(k*xy-l[0]*yx[i+1])/l[1];
end;
gotoxy(32,1);
write(' ');
gotoxy(32,2);
write(' x y ');
gotoxy(32,3);
write(' ',c:7:7,' ',yx[0]:7:7,' ');
for i:=0 to o-1 do begin
gotoxy(32,4+i);
write(' ',xy:7:7,' ',yx[i+1]:7:7,' ');
end;
gotoxy(32,o+4);
write(' ');
end;
lap1:readln;
delay(10000);
clrscr;
end.[/codebox]
Прошу помочь мене с переводом программы с Pascal в C++. На Pascal составить программу могу (знаю этот язык еще с школы), а вот с С++ проблема.
Я не прошу написать за меня программу. Кто отзовется буду благодарен. Вот сама программа:
[codebox]uses crt;
var
yx,xy,l,v,p,ff,ay,by,x:array [0..10] of real;
y,a,b:array[0..10,0..1] of real;
i,n,o:integer;
c,d,h,k:real;
label
lap1;
begin
clrscr;
writeln('введите наивысший порядок производной не больше трех ');
readln;
if n=0 then begin
writeln('это прямолинейная зависимость и решается без метода Эйлера ');
goto lap1;end;
writeln('введите коэффициенты {a0,a1}');
for i:=0 to n do
readln(l);
if (n=1) and (l[1]=0) or (n=2) and (l[2]=0) or (n=3) and (l[3]=0) then begin
writeln('деление на ноль');
goto lap1;
end;
writeln('введите коэффициент при x');
readln(k);
writeln('введите отрезок ');
readln(c,d);
o:=5;
h:=abs(d-c)/o;
writeln('шаг=',h:1:1);
writeln('задайте начальные условия y(x)= ');
for i:=0 to n-1 do
readln(v);
if n=3 then begin
yx[0]:=v[0];
ay[0]:=v[1];
by[0]:=v[2];
p[0]:=(k*c-l[0]*v[0]-l[1]*v[1]-l[2]*v[2])/l[3];
x[0]:=c;
gotoxy(32,1);
write(' ');
gotoxy(32,2);
write(' x y a b ');
gotoxy(32,3);
write(' ',c:7:7,' ',yx[0]:7:7,' ',ay[0]:7:7,' ',by[0]:7:7,' ');
for i:=0 to o-1 do begin
x:=x+h/2;
y[i,1]:=yx+(h/2)*ay;
a[i,1]:=ay+(h/2)*by;
b[i,1]:=by+(h/2)*p;
ff:=(k*x-l[0]*y[i,1]-l[1]*a[i,1]-l[2]*b[i,1])/l[3];
xy:=x+h/2;
yx[i+1]:=yx+h*a[i,1];
ay[i+1]:=ay+h*b[i,1];
by[i+1]:=by+h*ff;
x[i+1]:=x+h/2;
p[i+1]:=(k*xy-l[0]*yx[i+1]-l[1]*ay[i+1]-l[2]*by[i+1])/l[3];
end;
for i:=0 to o-1 do begin
gotoxy(32,4+i);
write(' ',xy:7:7,' ',yx[i+1]:7:7,' ',ay[i+1]:7:7,' ',by[i+1]:7:7,' ');
end;
gotoxy(32,4+o);
write(' ');
end;
if n=2 then begin
x[0]:=c;
yx[0]:=v[0];
ay[0]:=v[1];
p[0]:=(k*c-l[0]*yx[0]-l[1]*v[1])/l[2];
gotoxy(32,1);
write(' ');
gotoxy(32,2);
write(' x y a ');
gotoxy(32,3);
write(' ',c:7:7,' ',yx[0]:7:7,' ',ay[0]:7:7,' ');
for i:=0 to o-1 do begin
x:=x+h/2;
y[i,1]:=yx+(h/2)*ay;
a[i,1]:=ay+(h/2)*p;
ff:=(k*x-l[0]*y[i,1]-l[1]*a[i,1])/l[2];
xy:=x+h/2;
yx[i+1]:=yx+h*a[i,1];
ay[i+1]:=ay+h*ff;
x[i+1]:=x+h/2;
p[i+1]:=(k*xy-l[0]*yx[i+1]-l[1]*ay[i+1])/l[2];
end;
for i:=0 to o-1 do begin
gotoxy(32,4+i);
write(' ',xy:7:7,' ',yx[i+1]:7:7,' ',ay[I+1]:7:7,' ');
end;
gotoxy(32,4+o);
write(' ');
end;
if n=1 then begin
x[0]:=c;
yx[0]:=v[0];
p[0]:=(k*x[0]-l[0]*yx[0])/l[1];
for i:=0 to o-1 do begin
x:=x+h/2;
y[i,1]:=yx+(h/2)*p;
xy:=x+h/2;
ff:=(k*x-l[0]*y[i,1])/l[1];
yx[i+1]:=yx+h*ff;
x[i+1]:=x+h/2;
p[i+1]:=(k*xy-l[0]*yx[i+1])/l[1];
end;
gotoxy(32,1);
write(' ');
gotoxy(32,2);
write(' x y ');
gotoxy(32,3);
write(' ',c:7:7,' ',yx[0]:7:7,' ');
for i:=0 to o-1 do begin
gotoxy(32,4+i);
write(' ',xy:7:7,' ',yx[i+1]:7:7,' ');
end;
gotoxy(32,o+4);
write(' ');
end;
lap1:readln;
delay(10000);
clrscr;
end.[/codebox]