1

3 つの数値を受け取り、その 3 つの数値が三角形を形成するかどうかを計算するプログラムがあります。含まれている場合は、3 辺と周囲が印刷されます。ただし、何らかの理由で、周囲を印刷すると、Perimeter= 3(たとえば)と言う代わりに、と表示されますPerimeter= @@。何が原因でしょうか?Fortran を使うのはこれが初めてなので、少し迷っています。

PROGRAM G6P1
   IMPLICIT NONE
   REAL :: a, b, c, perimeter
   CHARACTER(LEN=30) :: Format, PerimeterFormat
   Format = "(3(2(A,X),F6.1,A,2X))"
   PerimeterFormat = "(' ',10A,X,F7.1)"
   PRINT *,'Please enter 3 numbers to form a triangle'
   READ *, a, b, c
   IF (a+b.gt.c) THEN
      IF (b+c.gt.a) THEN
         IF (a+c.gt.b) THEN
            PRINT *,'It is a triangle!'
            WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
            perimeter = A+B+C
            WRITE (*,PerimeterFormat) '','Perimeter=',perimeter

         ELSE
            PRINT *,'The sides do not form a triangle'
            WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
         ENDIF
      ELSE
         PRINT *,'The sides do not form a triangle'
         WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
      ENDIF
   ELSE
      PRINT *,'The sides do not form a triangle'
      WRITE (*,Format) 'A','=',a,';','B','=',b,';','C','=',c,';'
   ENDIF
END PROGRAM G6P1
4

1 に答える 1

1

それはあなたのフォーマットステートメントです:

PerimeterFormat = "(' ',10A,X,F7.1)"

Fortran 出力の文字に関しては、指定子のに長さを入れる必要がありますA。つまり、次のようになります。

PerimeterFormat = "(' ',A10,X,F7.1)"

それを変更すると修正されるはずです(gfortran 4.6.3で修正されました)。

于 2013-09-02T20:29:28.530 に答える