Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FORTRAN语言中的Pascal三角形_Fortran_Pascals Triangle - Fatal编程技术网

FORTRAN语言中的Pascal三角形

FORTRAN语言中的Pascal三角形,fortran,pascals-triangle,Fortran,Pascals Triangle,我正在尝试用FORTRAN创建pascal三角形。我做了算法。用C编译并成功了,但由于某种原因,我在FORTRAN中没有得到同样的结果。有人能帮我解决这个问题吗 C代码(工作): 你可以试试这个。请注意,如果您输入一个n>9的数字,它将不起作用(对于n>5,它并没有那么漂亮) 在您的程序中,除了打印时,几乎所有操作都是正确的:如果不添加可选的advance=“no”,Fortran将始终添加新行 关于样式,在这里将格式放在单独的行中不是很有用,并且.lt.可以被替换。下面是一些可以处理n较大值的

我正在尝试用FORTRAN创建pascal三角形。我做了算法。用C编译并成功了,但由于某种原因,我在FORTRAN中没有得到同样的结果。有人能帮我解决这个问题吗

C代码(工作):


你可以试试这个。请注意,如果您输入一个n>9的数字,它将不起作用(对于n>5,它并没有那么漂亮)

在您的程序中,除了打印时,几乎所有操作都是正确的:如果不添加可选的
advance=“no”
,Fortran将始终添加新行


关于样式,在这里将格式放在单独的行中不是很有用,并且
.lt.
可以被
替换。下面是一些可以处理
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
将输出的最大整数,并在这种情况下输出最紧凑的三角形…

虽然我很喜欢fortran,但我讨厌格式化输出时的I/O。不过,我在谷歌上已经找到了这一点。是的,这里的问题是,正如你提到的,它不能工作超过8行。这就是为什么我在寻找更灵活的代码。如果你能告诉我我的代码哪里出错了,我会非常感激,因为我认为我的算法是正确的。谢谢你的回复。回复你编辑过的答案:哦,我知道事情是怎么搞砸的。谢谢你指出这一点。谢谢你有用的回答。不过我已经把问题解决了。我想我不知道advance=“no”语法。我现在要用不同的值来试验我的代码。
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
program pascal
    implicit none
    integer :: i, j, n, c
    read(*, *) n
    do i = 0, n - 1
        c = 1
        do j = 0, n - i
            write(*, "(' ')", advance="no")
        end do
        do j = 0, i
            write(*, "(I2)", advance="no") c
            c = (c * (i - j)) / (j + 1)
        end do
        write(*, *)
    end do
end program
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