1.11M Members

I need help converting this Pascal code into Java. My Pascal Programming abilities are limited so any help would be much appreciated.

``````[
uses wincrt;
const n=300;      {1320 this is the max length possible}
m=2;
type table = array [1..n,1..m] of real;
var data,data2  : table;
i,j,card : integer;
t0,X0,Y0,Xn,h,g1,g2,r1,r2,d,slope:real;
ch:char;

procedure init (var dat,dat2:table);
{ this procedure initializes the matrix  of data }
var i,j:integer;
begin
writeln('THE DIFFERENTIAL EQUATIONS METHODS / THE SHOOTING METHOD');
writeln('--------------------------------------------------------');
writeln;

for i:=1 to n do
for j:=1 to m do begin
dat[i,j]:=0;
dat2[i,j]:=0;
end;
end;

begin
clrscr;
init(data,data2);
writeln('<> PLS INPUT THE BOUNDARY VALUES :                       ');
write(' t0 : ');     {t0=0}
t0:=data[1,1];
data2[1,1]:=data[1,1];
write(' X0 : ');
x0:=data[1,2];
write(' D (THE DESIRED VALUE AT ENDPOINT) which is X(tn) : ');
{P0=0}
data2[1,2]:=-1.5;
g1:=-1.5;
write('<> PLS INPUT THE FINAL VALUE tn : '); {Xn=1,2,3,4,5...}
write('<> PLS INPUT THE LENGTH OF THE INTERVAL h : ');
readln(h);      {h=0.1, 0.05, 0.01, 0.005, 0.001...h=0.01 is the best}
card:=trunc((Xn-data[1,1])/h);
writeln(card);

if (card<0) then
begin
writeln;
writeln('INVALID INPUT...');
halt(1);
end;
end;

procedure writing (dat,dat2:table;cd:integer);
{ this procedure outputs the table of data }
var i,j:integer;
begin
writeln;
for i:=1 to cd+1 do begin
for j:=1 to 2 do
write (dat[i,j]:25);
write(dat2[i,2]:30);
end;
end;

procedure RK4(var dat,dat2:table;cd:integer;h:real);
{this procedure applies Runge-Kutta's method of order 4 to the following ODE
dýx/dtý - (1-t/5)x = t      x(1)=2, x(3)=-1  }

var x,t,k1,k2,k3,k4,l1,l2,l3,l4,p:real;
begin
clrscr;
writeln('THE RUNGE-KUTTA OF ORDER 4 (RK4) METHOD GIVES :                 ');
writeln('                   TIME                   THE DISTANCE                 VELOCITY  ');
for i:=2 to cd+1 do
begin
dat[i,1]:= dat[1,1]+(i-1)*h;
dat2[i,1]:=dat[i,1];
t:=dat[i-1,1]; { t here is the independent variable }
x:=dat[i-1,2]; p:=dat2[i-1,2];
k1:= h * p;    l1:=h*((1-(t/5))*x+t);
k2:= h * (p+l1/2);   l2:=h*((1-((t+h/2)/5))*(x+k1/2)+(t+h/2));
k3:= h * (p+l2/2);   l3:=h*((1-((t+h/2)/5))*(x+k2/2)+(t+h/2));
k4:= h * (p+l3);     l4:=h*((1-((t+h)/5))*(x+k3)+(t+h));
dat[i,2]:= dat[i-1,2] + (1/6)*(k1+(2*k2)+(2*k3)+k4);
dat2[i,2]:= dat2[i-1,2] + (1/6)*(l1+(2*l2)+(2*l3)+l4);
end;
writing(data,data2,card);
end;

procedure message;
begin
write('PRESS ANY KEY...');
end;

procedure message2;
begin
write('PRESS ANY KEY TO EXIT...');
end;

begin
{ find R1 }
RK4(data,data2,card,h);
r1:=data[card+1,2];
writeln;
writeln('               R1 = ',r1);
message;

{ find R2 }
init(data,data2);
data[1,1]:=t0;
data2[1,1]:=data[1,1];
data[1,2]:=X0;
data2[1,2]:=-3.0;
g2:=-3.0;
RK4(data,data2,card,h);
r2:=data[card+1,2];
writeln;
writeln('              R2 = ',r2);

{ extrapolate the value of X' }
slope:= g1 + ((g2-g1)*(d-r1)/(r2-r1));
writeln;
writeln('        THE SLOPE IS : ',slope);
writeln('                      ');
message;

{ print the final and exact table of X }
init(data,data2);
data[1,1]:=t0;
data2[1,1]:=data[1,1];
write(' X0 : ');
data[1,2]:=x0;   {X0=1}
data2[1,2]:=slope;
RK4(data,data2,card,h);
writeln;
writeln('          THE SLOPE IS : ',slope,'     HENCE X''(',t0:2:1,') = ',slope);
writeln('                          ');
message2;
end.]
``````
You
Post:
View similar articles that have also been tagged: