1

FORTRANでパスカル三角形を作ろうとしています。アルゴリズムを行いました。C でコンパイルして成功しましたが、何らかの理由で FORTRAN で同じ結果が得られません。誰でもこれで私を助けることができますか?

C のコード (動作中):

#include <stdio.h>
#include <stdlib.h>

int main()
{
  unsigned int c, i, j, k,n;
  scanf("%d",&n);

  for(i=0; i < n; i++) {
    c = 1;
    for(j=1; j <= (n-1-i); j++) printf(" ");
    for(k=0; k <= i; k++) {
      printf("%2d", c);
      c = c * (i-k)/(k+1);
    }
    printf("\n");

  }
  return 0;
}

FORTRAN のコード (機能しない、ここでヘルプが必要):

program pascal
  implicit none
  integer i,j,k,p,n
  read(*,*)n
  i=0
  do while(i.lt.n)
    p=1
    do j=1,n-1-i
    write(*,5)
    5 format(1x)
    enddo
    do k = 0,i
    write(*,1)p
    1 format(i2)
    p = p*(i-k)/(k+1)
    enddo
    i=i+1
    write(*,2)
    2 format(/)
    enddo
endprogram
4

2 に答える 2

1

のより大きな値を処理できるいくつかの改善点を次に示しますn

program pascal
implicit none
integer i,j,k,p,n
write (*, '("input n: ")', advance="no")
read(*,*) n
do i=0,n-1
   p=1
   do j=1,n-1-i
      write(*,'(3X)', advance="no")
   enddo
   do k = 0,i
      write(*,'(I6)', advance="no") p
      p = p*(i-k)/(k+1)
   enddo
   write(*, '(/)')
enddo
endprogram

このプログラムのフォーマットされた IO は単純に思えます。の特定の値に対して出力される最大の整数を計算し、nその場合に最もコンパクトな三角形を出力したい場合は、さらに複雑になります...

于 2014-04-04T02:19:01.650 に答える