輪投げの点数

 投稿者:エステー  投稿日:2014年 5月18日(日)13時57分49秒
   輪投げの点数を集計して、合計点数の多い順に並べるプログラムを作りまし
た。合計欄の右横に順位を記入したいのですが、どのようなプログラムをつく
ればよいのかわかりません。どなたかそのプログラムをご教示願えないでしょ
うか。同じ合計点数の人は同じ順位にし、実行結果の順位欄のように番号をつ
けたいのです。よろしくお願いします。


PRINT "   "
PRINT "輪投げの点数の集計"
PRINT "   "

!人数と回数の入力---------------------------------
LET c=11  ! 出席人数
LET d=5   ! ゲームの回数

PRINT "出席人数=";c;"人"
PRINT "輪投げの回数=";d;"回"

DIM T(c,d+1),N$(c)

FOR I=1 TO c
   READ N$(I)
   FOR J=1 TO d
      READ T(I,J)
      LET T(I,d+1)=T(I,d+1)+T(I,J)
   NEXT J
NEXT I

FOR I=1 TO c
   FOR J=I+1 TO c
      IF T(I,d+1)>T(J,d+1) THEN GOTO 10
      LET M$=N$(I)
      LET N$(I)=N$(J)
      LET N$(J)=M$

      FOR K=1 TO d+1
         LET A=T(I,K)
         LET T(I,K)=T(J,K)
         LET T(J,K)=A
      NEXT K
10
      NEXT J
   NEXT I

   PRINT "   "
   PRINT TAB (20);"1回";TAB (27);"2回";TAB (34);"3回";
   PRINT TAB (41);"4回";TAB (48);"5回";TAB (55);"合計";TAB (62);"順位"


   FOR I=1 TO c
      PRINT I;" ";N$(I);
      FOR J=1 TO 6
         PRINT TAB (J*7+c+3);T(I,J);
      NEXT J
      PRINT
   NEXT I

   !氏名と点数の入力--------------------------------
   DATA エーさん  ,23  ,20  ,28  ,15  ,5
   DATA ビーさん  ,10  ,5  ,22  ,23  ,18
   DATA シーさん  ,18  ,21  ,11  ,0  ,14
   DATA デーさん  ,15  ,20  ,25  ,22  ,20
   DATA イーさん  ,18  ,22  ,10  ,24  ,17
   DATA エフさん  ,22  ,10  ,5  ,0  ,19
   DATA ジーさん  ,15  ,25  ,23  ,10  ,8
   DATA アイさん  ,22  ,11  ,8  ,26  ,015
   DATA ケーさん  ,8  ,6  ,19  ,22  ,18
   DATA エルさん  ,16  ,5  ,13  ,26  ,13
   DATA エムさん  ,10  ,8, 15  , 21  ,19
   !------------------------------------------------

END



実行結果(順位の欄は、手書きで書き加えた数字です)
                   1回   2回   3回   4回   5回   合計   順位
1  デーさん         15     20     25     22     20     102  1
2  イーさん         18     22     10     24     17     91    2
3  エーさん         23     20     28     15     5      91    2
4  アイさん         22     11     8      26     15     82    3
5  ジーさん         15     25     23     10     8      81    4
6  ビーさん         10     5      22     23     18     78    5
7  エムさん         10     8      15     21     19     73    6
8  エルさん         16     5      13     26     13     73    6
9  ケーさん         8      6      19     22     18     73    6
10  シーさん        18     21     11     0      14     64    7
11  エフさん        22     10     5      0      19     56    8
 

Re: 輪投げの点数

 投稿者:山中和義  投稿日:2014年 5月18日(日)17時32分59秒
  > No.3380[元記事へ]

エステーさんへのお返事です。

>  輪投げの点数を集計して、合計点数の多い順に並べるプログラムを作りまし
> た。合計欄の右横に順位を記入したいのですが、どのようなプログラムをつく
> ればよいのかわかりません。どなたかそのプログラムをご教示願えないでしょ
> うか。同じ合計点数の人は同じ順位にし、実行結果の順位欄のように番号をつ
> けたいのです。よろしくお願いします。


T(i,d+1)が並び替えられているので、それを使いましょう。


   PRINT TAB (20);"1回";TAB (27);"2回";TAB (34);"3回";
   PRINT TAB (41);"4回";TAB (48);"5回";TAB (55);"合計";TAB (62);"順位"


   LET K=1 !順位
   LET W=T(1,d+1) !その値

   FOR I=1 TO c
      PRINT I;" ";N$(I);
      FOR J=1 TO 6
         PRINT TAB (J*7+c+3);T(I,J);
      NEXT J
      IF T(I,d+1)<W THEN !小さい値なら
         LET K=K+1 !順位を下げる
         LET W=T(I,d+1)
      END IF

      PRINT TAB(62); K !表示する
   NEXT I

   !氏名と点数の入力--------------------------------
   DATA エーさん  ,23  ,20  ,28  ,15  ,5

 

輪投げの点数

 投稿者:エステー  投稿日:2014年 5月19日(月)09時44分54秒
  山中和義 様
 さっそくプログラムを提示していただき有難う御座いました。
自分なりにいろいろ作ってみたのですが、どうしてもうまく
いきません出した。5月末に行われる輪投げ大会(人数30人位)
で、このプログラムを使って点数を集計する予定です。
本当に有難うございました。今後もよろしくお願いします。
 

戻る