Fortran Coder

查看: 25751|回复: 5
打印 上一主题 下一主题

[数值问题] 找数组中最大元素的个数以及位置

[复制链接]

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
跳转到指定楼层
楼主
发表于 2020-3-3 16:05:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手第一次发帖,想问一下大佬我这个写的程序哪里错了,我用maxval 已经找到了数组中最大的元素,现在想求个数,但是一直显示
Array section designator, e.g. '(:)', is required besides the coarray designator '[...]' at (1) 不太理解
求问一下
代码如下
[Fortran] 纯文本查看 复制代码
PROGRAM Vote32

! input constants
! N is the number votes
! M is maximum allowed number
INTEGER, PARAMETER :: N = 20, M = 4
INTEGER, PARAMETER :: seed = 42

! normal variables
INTEGER :: winner = 0, wincount = 0

! votes is the input array
INTEGER, DIMENSION(N) :: votes
INTEGER, DIMENSION(-1:M) :: counts;

! init random number generator
i = RAND(seed)

! init votes
DO  i=1,N
    votes(i) = RAND() * (M+3) - 2;
END DO

WRITE(*,"(A,100I3)") 'Input is: ', votes

! TODO
! find which was most voted number

winner = maxval(votes, dim=1, mask=(votes>0))
DO j=1,N
    if (votes == winner) then
        wincount = wincount + 1
END DO
!wincount = find(votes, winner)
!WRITE(*,*) 'Most votes was: ', wincount
WRITE(*,*) 'Winners were:   ', winner


END PROGRAM Vote32
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
沙发
 楼主| 发表于 2020-3-3 16:06:28 | 只看该作者
就是从第30行开始有问题,其他的应该没问题

235

帖子

0

主题

0

精华

版主

World Analyser

F 币
630 元
贡献
464 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
板凳
发表于 2020-3-3 16:13:01 | 只看该作者
DO j=1,N
    if (votes == winner) then
        wincount = wincount + 1
END DO
改为
DO j=1,N
    if (votes(j) == winner) then
        wincount = wincount + 1
END DO
或者
wincount=count(votes == winner)

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
地板
 楼主| 发表于 2020-3-3 16:17:58 | 只看该作者
kyra 发表于 2020-3-3 16:13
DO j=1,N
    if (votes == winner) then
        wincount = wincount + 1

万分感谢!!!!

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
5#
 楼主| 发表于 2020-3-3 16:22:35 | 只看该作者
kyra 发表于 2020-3-3 16:13
DO j=1,N
    if (votes == winner) then
        wincount = wincount + 1

还有个问题如何找到数组中最多的元素呢

235

帖子

0

主题

0

精华

版主

World Analyser

F 币
630 元
贡献
464 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
6#
发表于 2020-3-3 16:27:28 | 只看该作者
语法中没有这种函数,自己写循环统计吧
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-27 22:32

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表