次の5人の学生の成績の個人別の平均点と、科目別の平均点をそれぞれ求め、表示するプログラムを作成せよ。Print Using 文を使うと、きれいな表形式の出力が可能です。
学籍番号 英語 数学 情報 平均
1 70 60 80
2 50 60 50
3 70 90 100
4 90 100 50
5 40 70 80
という問題があって。。自分なりにやってみたんですが。。
Dim a(5,5)
For i=1 to 5
For j=1 to 5
Read a(i,j)
print a(i,j);
Next j
print
Next i
Data "学生番号","英語","数学","情報","平均"
Data 1,70,60,80,70
Data 2,50,60,50,53
Data 3,70,90,100,87
Data 4,90,100,50,80
Data 5,40,70,80,63
Data "平均",64,76,72,71
End
っていうふうにつくってみたんですがうまくいかなくて。。
みなさん、助けてください><
No.1ベストアンサー
- 回答日時:
課題?独学?・・・とりあえず、指摘とヒント
個人別の平均点、科目別の平均点をあらかじめ計算をし、
DATAに配列していますが、
題意から察すると、 平均を求める数式を作成して、且つPRINTUSING で
見栄えよい表示にする。 ことを求めている。
出力結果が、下記のようになる事をイメージする。このとき、
100点が最大なので、文字スペース3桁使用である事も考慮。
学生番号 英語 数学 情報 平均 ←(1)
1 70 60 80 70 ←(2)
2 50 60 50 53 ←(3)
3 70 90 100 87 ←(4)
4 90 100 50 80 ←(5)
5 40 70 80 63 ←(6)
平均 64 76 72 71 ←(7)
まず、データを読み込み、格納。(5人分、3科目で15個分)
Dim a(5,3)
For i=1 to 5 : For j=1 to 3
Read a(i,j)
次に(1)を実行
Print"学生番号 英語 数学 情報 平均"
(2)~(6)で、 学生番号の i の平均を求める式は、
For i=1 to 5
Heikin(i)=Int((a(i,1)+a(i,2)+a(i,3))/3) 'Average関数でも良い。Int関数で整数化
Print i , a(i,1) , a(i,2) , a(i,3) , Heikin(i) ’ ここは、PrintUsing文 を使う。(自分で考える)
Next i
(7)で、教科平均 3科目分 求める式を作る。 と、意味あるのかわからないが、15個の平均を求める。
For j=1 to 3
Kyouka(j)=Int((a(1,j)+a(2,j)+a(3,j)+a(4,j)+a(5,j))/5)
Next j
AllHeikin=Int((Kyouka(1)+Kyouka(2)+Kyouka(3))/3)
Print文で "平均”, Kyouka(1) , Kyouka(2) , Kyouka(3) , AllHeikin 'ここもPrintUsing文 で書く。
For~to~文:Next 間の 数式も、さらに改良の余地あり。 ここは、自分で考える。
No.2
- 回答日時:
まず、プログラムに関する質問をする場合に、何をやったらどうなった(どう表示された)という情報がないと、答えが絞れなくなります。
で、TinyBASICそのものは知りませんが、ホームページでチラッと見た限り、昔のN-BASICに近いものだと思いますので、その範囲の知識でお答えいたします。
このプログラムの場合、readを2重ループで繰り返していますが、5回を5回で25回のreadがあることになります。ところがdata文は35個ですから不自然です。
つまりは、a()という配列変数は、学籍番号と成績を格納するためのものと想像しますが、DATA文の一番最初に項目名の文字データが並んでいますので、おそらく最初のreadの段階で数字配列変数に"学生番号"という文字を読み込もうとしたエラーが発生することと思います。
で、対処方法としていろいろ考えられますが、簡単なところで、一番最初のdata文を1行ごっそり抜いてしまうことでとりあえずそれっぽい表示ができるでしょう。ただ、問題文が要求しているプログラムとは、かなり離れたものですので、再考が必要です。(平均点を自分で計算してdata文にしている時点でもうプログラムじゃないですよ。)
さて、具体的なプログラムとして、初期設定とデータ読み込みに、
Dim a(5,3)
For i=1 to 5
For j=1 to 3
Read a(i,j)
Next j
Next i
データ文に関しては
Data 70,60,80
Data 50,60,50
Data 70,90,100
Data 90,100,50
Data 40,70,80
となり、これらの間に横の平均と縦の平均を求める計算の処理を入れ、出力の処理を入れたら出来上がりです。(プログラムの作り方次第では Dim a(5,3) よりも配列を大きく取って合計や平均を入れられるようにしたほうが楽かもしれません)
プログラムの面白いのはここからですので、後は考えてみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
Sublime Text 3でのFortranプロ...
-
ProC 固定SQLでNULLってどう表...
-
fortran if文
-
3次関数を作るプログラム
-
c言語のプログラミング 2つの整...
-
最近c言語始めたばかりなんです...
-
Fortran90についての質問です。
-
Excelで4096点以上のFFTの方法
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
65536は2の何乗なのでしょうか?
-
VBAが止まります。
-
読み込み中にアクセス違反が発...
-
VBAで仕様書は書きますか?
-
Delphiの逆コンパイル
-
XnViewにwebpを「いつも開く」...
-
初心者はIDE使わないほうが良く...
-
jpeg2000画像の圧縮をpythonを...
-
アルゴリズムとプロトコールの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
JCLの基本について教えてください
-
Sublime Text 3でのFortranプロ...
-
【JAVA】数字をひし形に出力す...
-
360度を超える角度
-
ProC 固定SQLでNULLってどう表...
-
COBOLのピリオド
-
Fortran90についての質問です。
-
3つの整数のうち奇数のみを表示...
-
main関数終了時のreturnの意味は?
-
fortran if文
-
fortranについて
-
4桁の数値を逆に表示されるプ...
-
3次関数を作るプログラム
-
PICのプログラムでsrandを使う...
-
整数格子点を列挙するプログラム
-
ロトカ=ヴォルテラ方程式 をC...
-
Fortran90のプログラムについて
-
Segmentation fault
-
Fortran "実引数の型が仮引数の...
おすすめ情報