【问题标题】:How do you write a fortran program to print the sum of all the elements in a square matrix你如何编写一个fortran程序来打印方阵中所有元素的总和
【发布时间】:2020-09-07 16:11:47
【问题描述】:

我有一个这样的数组

3 4 5
1 2 3
1 2 3

我将如何编写一个 Fortran 程序来打印该数组中所有元素的总和。

在上面的例子中,输出应该是 24。

【问题讨论】:

  • print *, sum([3,4,5,1,2,3,1,2,3]) ; end
  • 到目前为止你有什么尝试?
  • 欢迎您,请拨打tour 并阅读询问。你试过求和内在函数吗?发生了什么?你的代码看起来如何?矩阵是如何声明的?
  • 似乎我们有很多关于以某种方式对数组求和的问题,但是一个简单的问题“如何对数组求和”是如此简单以至于还没有被问到。但是,从上述问题的当前状态来看,这并不是真正的问题。
  • 您的程序中是否已经有数组,还是必须先从外部文件中读取?

标签: matrix fortran


【解决方案1】:

一种方法是在 fortran 中使用嵌套循环。令 A(1:n1,1:n2) 为数组,任何矩阵的通用代码为,(我假设您将所有内容都声明为 n1,n2 为整数;总和为实数,A 为适当的数组)

n1 = size(A,1)
n2 = size(A,2)
sum = 0.0d0
do i = 1,n1
   do j = 1,n2
      sum = sum + A(i,j)  
   enddo
enddo
print*, 'Sum of elements in array is',sum

对于方阵,n1 和 n2 是同一个数。如果保存为.f文件,写代码时要注意fortran77格式。

编辑:正如有人正确指出的那样,最简单的是,

print*, sum(A)

【讨论】:

  • 与print*, sum(a)相比,我不会称其为“简单”。
  • @francescalus 是的,我的错。编辑以反映“一种方式”而不是“最简单的方式”,正如您正确指出的那样,这不是真的。我认为问题是没有使用内在函数。
  • Fortran 是主要列,因此交换循环会更快(尽管对于这么小的矩阵,差异可以忽略不计)。
  • 在整数示例中,它看起来很简单,但通常需要累加器有足够的位数以免溢出......在许多情况下,这种排除 SUM 的方式与它操作时返回的类型相同.在这些情况下,使用 MAP/UNION 通常会很方便,尤其是在不确定列主...
猜你喜欢
  • 2019-10-07
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 2022-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多