ソースコードを404のPCからこぴーできなかったから、ちょいまってて
ある型のデータが、ずらーっとメモリ上に並んでいるデータ構造を配列と呼びます(ましたね?)
例えば、整数の以下のような配列は
これをC++で同じ状態を作るとしたら、こんな感じでしたね?
<配列の作り方と初期化>
int arr[6]; arr[0] = 2; arr[1] = 5; arr[2] = 7; arr[3] = 1; arr[4] = 0; arr[5] = 3;
配列のそれぞれの番号を表す[]内の数字のことを添え字(index:インデックス)と呼びます。
これを、初期化と宣言を同時に行うと以下のようになりました。
参考(前にやった配列の初期化の資料)
int arr[6] = { 2, 5, 7, 1, 0, 3 };
配列を使って、人数分の学生の得点を入力し、平均点と合計点を表示するプログラムを作れ
学生の人数は、定数(整数)で初めに決めておく(5から10人ぐらいがいいのでは?)
今日の練習問題
#include <iostream>
using namespace std;
//出席番号1~5番までの学生の点数を処理するプログラム
//キーボードからデータを入力
//画面には "出席番号〇番の学生の点数:" 〇は番号に変換
//データを入力し終わったら、画面に
//全員の番号と得点
//合計点と平均点
//できそうな人は、最高点と最低点、を表示
//さらに余裕あったら、学生名も入れてみよう!
//学生数は、定数を使うこと!
//ヒント 配列は[0]~[4]までだから、それを1から5番までに使おうとすると
// 番号ずれちゃうから、足したり引いたりして工夫する!
int main()
{
//SNUM:学生の人数(定数=プログラム中でここ以降変わらない数)
const int SNUM = 5;//入力大変だから5にしようね
return 0;
}
ヒント:
C++では、以下のようなルールがあります。今まで黙っててごめんね。
整数/整数 ⇒ 整数
整数/実数 ⇒ 実数
実数/整数 ⇒ 実数
実数変数 = 整数(代入) ⇒ 小数点部分切り捨てで代入
実数変数 = 実数 ⇒ 小数点部分ありで代入(あたりまえか。。。)
整数変数 = 実数 ⇒ 小数点部分を切り捨てて、整数に変換されて代入
計算結果はどんな型になるか、それをどんな型に代入して使えば正しい動作になるか?
常に考えてソースコードを書こう。
#include <iostream> //iostreamヘッダー ヘッダーにいろんな機能が詰まってるよ #include <string> //stringヘッダー それを呼び出して使う #include <iomanip>//setw使うのに必要 using namespace std; int main() { const int STUNUM = 5; int stuScore[STUNUM];//定数で配列を取得 string stuName[STUNUM]; int max; int min; for (int i = 0; i < STUNUM; i++)//配列はゼロから始まる { cout << "出席番号" << i + 1 << "番目の学生の名前を入力:"; cin >> stuName[i];//インデックスで、配列の番号を指定 cout << "出席番号" << i + 1 << "番 " << stuName[i] << "さんの得点を入力:"; cin >> stuScore[i]; } //max min を求めるループ max = stuScore[0]; min = stuScore[0]; for (int i = 0; i < STUNUM; i++) { if (stuScore[i] < min) min = stuScore[i]; //今の最小値より小さかったら最小値を更新 if (stuScore[i] > max) max = stuScore[i]; //今の最大値より大きかったら最大値を更新 } cout << "+------------------------------------------+" << endl; for (int i = 0; i < STUNUM; i++) { cout << "出席番号" << setw(2) << i + 1 << "番 " << setw(5) << stuName[i] << "さんの得点|" << setw(4) << right << stuScore[i] << "|" << endl; } cout << "+------------------------------------------+" << endl; float sum = 0; float average = 0.0f; //浮動小数点だよ for (int i = 0; i < STUNUM; i++) { sum += stuScore[i]; } cout << "全員の合計点:" << sum << endl; average = sum / STUNUM; cout << "全員の平均点:" << average << endl; cout << "最高点:" << max << endl; cout << "最低点:" << min << endl; return 0; }
https://vipprog.net/wiki/?%E7%B7%B4%E7%BF%92%E5%95%8F%E9%A1%8C.html
URL変わってたから貼りなおしたよ。