Can some one help change these two Fortran program to Pascal. PROGRAM Simple REA
ID: 3733554 • Letter: C
Question
Can some one help change these two Fortran program to Pascal.
PROGRAM Simple
REAL :: a, b, c, d
character (LEN=3) :: r='si'
DO WHILE ( r .EQ. 'si')
PRINT *, 'Enter variable A: '
READ(*,*) a
PRINT *, 'Enter variable B: '
READ(*,*) b
PRINT *, 'Enter variable C: '
READ(*,*) c
d = b*b - 4.0*a*c
IF (d <0.0) THEN
WRITE(*,*)'It is not real: ', d
ELSE IF (d >= 0.0) THEN
WRITE(*,*)'It is real: ', d
END IF
PRINT *, 'Do you wish to continue: '
READ(*,*) r
END DO
PRINT *, 'Program finished '
END PROGRAM Simple
---------------------------------------------------------
Program Sub
REAL :: a, b, c,d,r1,r2
PRINT *, 'Enter variable A: '
READ(*,*) a
PRINT *, 'Enter variable B: '
READ(*,*) b
PRINT *, 'Enter variable C: '
READ(*,*) c
CALL Roots(a, b, c, d, r1, r2)
CALL Print(r1, r2, d)
END Program Sub
SUBROUTINE Roots(a, b, c, d, r1, r2)
d = b*b - 4.0*a*c
IF (d <0.0) THEN
WRITE(*,*)'Doesn’t contain real square root.'
STOP
ELSE IF (d >= 0.0) THEN
d = SQRT(d)
r1 = (-b + d)/(2.0*a)
r2= (-b - d)/(2.0*a)
END IF
RETURN
END
SUBROUTINE PRINT(r1, r2, d)
IF (r1 == r2) THEN
PRINT*,'The following square root is; ', root1
ELSE IF (r1 /= r2) THEN
PRINT*,'The square root is ', r1, ' y ', r2
END IF
PRINT*,'The discriminant is ', d
RETURN
END
Explanation / Answer
PROGRAM-1 (PASCAL)
program Simple;
var a,b,c,d:real;
r:Char;
begin
r:='s';
while(r = 's') do
begin
writeln('Enter variable A:');
readln(a);
writeln('Enter variable B:');
readln(b);
writeln('Enter variable C:');
readln(c);
d:=b*b-4*a*c;
if (d<0.0) then
writeln('It is not real:',d)
else if(d>=0.0) then
writeln('It is real:',d);
writeln('Do you wish to continue:');
readln(r);
end;
writeln('Program finished');
end.
OUTPUT
Enter variable A: -3
Enter variable B: -3
Enter variable C: 3
It is real: 4.5000000000000000E+001
Do you wish to continue: n
Program finished
PROGRAM-2 (PASCAL)
program Sub;
procedure Roots(a,b,c,r1,r2:real);
var
d:real;
begin
d:=b*b-4.0*a*c;
if(d<0.0) then
writeln('Doesnt contain real square root.')
else if(d>=0.0) then
d:=sqrt(d);
r1:=(-b+d)/(2.0*a);
r2:=(-b-d)/(2.0*a);
writeln('Root-1:',r1);
writeln('Root-2:',r2);
end;
procedure print(r1,r2,d:real);
begin
if(r1=r2) then
writeln('The following square root is:',r1)
else if(r1<>r2) then
writeln('The square root is:',r1,'y',r2)
else
writeln('The discriminant is',d);
end;
var
a,b,c,d,r1,r2:real;
begin
writeln('Enter variable A:');
readln(a);
writeln('Enter variable B:');
readln(b);
writeln('Enter variable C:');
readln(c);
Roots(a,b,c,r1,r2);
print(r1,r2,d);
end.
OUTPUT
Enter variable A:-3
Enter variable B:-3
Enter variable C:3
Root-1:-1.6180339887498949E+000
Root-2: 6.1803398874989490E-001
The following square root is: 0.0000000000000000E+000