Tcl/Tk 烹调书 - Tcl/Tk 和 FORTRAN


第 1 步: 解二次方程的 FORTRAN 应用程序

C
CThis program solves the quadratic equation
C          2
C	a x  + b x + c = 0
C
	IMPLICITDOUBLE PRECISION (a-h,o-z)
	COMMON IFLAG
c 
	PRINT *, 'Input the coefficients a,b,c'
	READ *,a,b,c
	CALL qsolve(a,b,c,x1,x2)
	IF (IFLAG .EQ. 0) THEN
	    PRINT*,'IFLAG = ',IFLAG 
	    PRINT *, 'ROOTS ARE REAL'
	ELSE
	    PRINT*,'IFLAG = ',IFLAG
	    PRINT*,'ROOTS ARE COMPLEX -- (RealPart, ImagPart) = (x1,x2)'
	END IF
	WRITE(UNIT=6, FMT=*)'x1 = ',x1,'  ','x2 = ',x2 
	END
	SUBROUTINE qsolve(a,b,c,x1,x2)
C+
C 
C FUNCTIONAL DESCRIPTION:	
C 
C    solves the quadratic equation
C 
C input parameters   a,b,c  (DOUBLEPRECISION)
C 
C-
	IMPLICITDOUBLE PRECISION (a-h,o-z)
	COMMON IFLAG
c
c compute the discriminant
c
	disc = (b*b - 4*a*c)
	PRINT*,'DISC : ',DISC
	IF (disc .GE. 0) THEN
	    x1 = (- b + sqrt( disc ) )/(2.0*A)
	    x2 = (- b - sqrt( disc ) )/(2.0*A)
	    iflag = 0
	ELSE
	    iflag = 1
	    x1 = -b/(2*A)
	    x2 = sqrt(-disc)/(2*A)
	END IF
	RETURN
	END

在你的当前工作目录中放置这个代码并通过在命令行键入下行的命令来编译它:

		f77 -o quads quads.f

下面是以两组不同的系数运行 quads 两次的输出结果:


holly% quads
 Input the coefficients a,b,c
2 5 6
 DISC :    -23.000000000000
 IFLAG =   1
 ROOTS ARE COMPLEX -- (RealPart, ImagPart) = (x1,x2)
 x1 =    -1.2500000000000  x2 =     1.1989578808282



holly% quads
 Input the coefficients a,b,c
2 5 3
 DISC :     1.0000000000000
 IFLAG =   0
 ROOTS ARE REAL
 x1 =    -1.0000000000000  x2 =    -1.5000000000000


下一步 提供这个应用 Tk 前端。