Fortran Coder

查看: 6532|回复: 4
打印 上一主题 下一主题

[数值问题] 找数组中最多的元素以及其个数,为什么没有计算0的值

[复制链接]

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
跳转到指定楼层
楼主
发表于 2020-3-3 16:48:56 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
想了一个方法但是只找到了非0元素中最多的元素以及其个数,不太理解为什么
[Fortran] 纯文本查看 复制代码
!par20_ex7_t32
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
INTEGER :: countnum_p = 0, countnum_n = 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

DO j=1,N-1
    countnum_p = count(votes == votes(j))
    countnum_n = count(votes == votes(j+1)) 
    if (countnum_n > countnum_p) then
        winner = countnum_n
        wincount = votes(j+1)
    else
        winner = countnum_p
        wincount = votes(j)
    END if
END DO


WRITE(*,*) 'Most votes was: ', wincount
WRITE(*,*) 'Winners were:   ', winner


END PROGRAM Vote32




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
沙发
 楼主| 发表于 2020-3-3 16:49:58 | 显示全部楼层
仍然是在第31行开始,为什么没有统计到0的个数呢

7

帖子

2

主题

0

精华

入门

F 币
28 元
贡献
17 点
板凳
 楼主| 发表于 2020-3-3 17:00:09 | 显示全部楼层
我用了一种比较偷懒的方式,直接先计算0的个数然后最后再和这个比较,但还是不太明白这个count计数为什么没有把0算进去,求大佬解答一下
[Fortran] 纯文本查看 复制代码
INTEGER :: countnum_p = 0, countnum_n = 0, countnum_z = 0
if (countnum_z >winner) then
    winner = countnum_z
        wincount = 0
END if
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-14 05:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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