色彩を教える人になるための講座「色彩講師養成講座」の魅力とは>>

こんにちは。
C++を使った平均値、最大値と最低値の出し方ついて詳しい方にお伺いしたいです。

31人の生徒のテストの点数の平均値、最高得点と最低得点を割り出せるようにC++を使ってプログラムしたいのですが、アルファベットに代入しようと思ったところ生徒の数がアルファベットよりも多くうまく行きません。何か他に方法はありますでしょうか?
また、31人の中の最高得点と最低得点の出し方も是非教えていただけますと幸いです。
回答お待ちしております。よろしくお願いいたします。

gooドクター

A 回答 (5件)

アルファベットには大文字と小文字があるので、


足りなくなることはないと思いますが。
    • good
    • 0

「アルファベットに代入」という言葉はおかしい. 「変数に代入」というべきだ.



C++ の場合変数名の大文字と小文字は区別されるから, 1文字の変数でも (最低) 52個は作れる. まあ「1文字の変数」自体を使う場面が限定されるけど.

本題としては配列なりなんらかのコレクションを使うのが本手.
    • good
    • 0

#include <iostream>


#include <algorithm>
#include <vector>
#include <numeric>

int main(void) {
 // 31人分の得点。得点内容は適当で良い。
 std::vector<int> scores = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
             11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
             21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
             31};

 // 平均値の出し方
 std::cout << std::accumulate(scores.begin(), scores.end(), 0) / scores.size() << std::endl;

 // 最高得点の出し方
 std::vector<int>::const_iterator result1 = std::max_element(scores.begin(), scores.end());
 std::cout << *result1 << std::endl;
 // 最低得点の出し方
 std::vector<int>::const_iterator result2 = std::min_element(scores.begin(), scores.end());
 std::cout << *result2 << std::endl;

}
    • good
    • 0

> 生徒の数がアルファベットよりも多くうまく行きません。



そんなにたくさん変数は不要では。
・点数の合計
・生徒数
があれば平均値は出せるので、1人ずつ逐次合計に加算すればいいだけですし。

・最大値
・最小値
もそれぞれ1個ずつ覚えとけば良い。

ファイルポインタとかを除く変数は4つあれば足りるのでは。


まずは、最高得点だけ求めるプログラム作ってみては。

質問者さんがアプリか何かで、最高100点のミニゲームを何十回か遊んだとして、最高得点は何点だったって場合に、何十回の得点を全部覚えてるわけでないでしょう。
    • good
    • 0

配列を使うことをお勧めします。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング