はじめに
今回は4回目ということで、配列を中心に学んでいきます。
使用する環境
環境はVisual Studio 2022を使用します。
配列の値を出力する
このコードでは準備した配列に値を格納して表示します。配列を使うことで、多くのデータを簡単に扱うことができます。
#include <iostream>
using namespace std;
int main()
{
int test[5];
test[0] = 50;
test[1] = 80;
test[2] = 32;
test[3] = 70;
test[4] = 94;
for (int i = 0; i < 5; i++) {
cout << i + 1 << "番目の点数は" << test[i] << "です\n";
}
return 0;
}
配列の内容をソートする
このコードでは配列の要素を大きい順にソートしています。test[t]
とtest[s]
を比較しながら比較した要素のほうが大きい場合、要素を入れ替えます。
#include <iostream>
using namespace std;
int main()
{
const int num = 10;
int test[num];
cout << num << "人の点数を入力してください。\n";
for (int i = 0; i < num; i++) {
cin >> test[i];
}
for (int j = 0; j < num - 1; j++) {
for (int k = j + 1; k < num; k++) {
if (test[k] > test[j]) {
int tmp = test[k];
test[k] = test[j];
test[j] = tmp;
}
}
}
for (int m = 0; m < num; m++) {
cout << m + 1 << "番目の人の点数は" << test[m] << "です。\n";
}
return 0;
}
多次元配列をつかう
多次元配列を使うことでより複数の情報を扱うこともできます。このコードを実行すると
1人につき2回のテスト結果を出力します。
#include <iostream>
using namespace std;
int main()
{
const int sub = 2;
const int num = 5;
int test[sub][num];
test[0][0] = 30;
test[0][1] = 40;
test[0][2] = 49;
test[0][3] = 69;
test[0][4] = 82;
test[1][0] = 90;
test[1][1] = 43;
test[1][2] = 67;
test[1][3] = 75;
test[1][4] = 92;
for (int i = 0; i < num; i++) {
cout << i + 1 << "番目の人の1回目のテストの結果は" << test[0][i] << "点です。\n";
cout << i + 1 << "番目の人の2回目のテストの結果は" << test[1][i] << "点です。\n";
}
return 0;
}
ポインタの演算
+演算子を使ってポインタの足し算を行っています。*(test + 1)
を調べると、配列の2番目の要素の値を知ることができます。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int test[5] = { 80,60,55,22,75 };
cout << "test[0]の値は" << test[0] << "です。\n";
cout << "test[0]のアドレスは" << &test[0] << "です。\n";
cout << "testの値は" << test << "です。\n";
cout << "test+1の値は" << test + 1 << "です。\n";
cout << "*(test+1)の値は" << *(test + 1) << "です。\n";
return 0;
}
引数と配列
配列を関数の引数として使うプログラムです。5人の身長を入力することで平均身長が表示されます。
#include <iostream>
#include <vector>
using namespace std;
//avg関数の宣言
double avg(int n[]);
int main() {
int number[5];
cout << "5人の身長を入力してください。\n";
for (int i = 0; i < 5; i++) {
cin >> number[i];
}
double ans = avg(number);
cout << "5人の平均身長は" << ans << "です。\n";
return 0;
}
//avg関数の定義
double avg(int n[]) {
double sum = 0;
for (int i = 0; i < 5; i++) {
sum += n[i];
}
return sum / 5;
}
配列で文字列を扱う
配列に文字列を格納することができます。このコードでは配列str[]
に記憶した文字列"Hello"
の各文字の間に*
記号を挿入して表示します。文字列を扱う場合は最後の文字が\0
になります。
#include <iostream>
#include <vector>
using namespace std;
int main() {
char str[] = "Hello";
cout << "Hello\n";
for (int i = 0; str[i] != '\0'; i++) {
cout << str[i] << "*";
}
cout << '\n';
return 0;
}
strlen()関数をつかう
C++の環境には、文字列を扱うための標準的な関数が添付されています。標準ライブラリと呼ばれ、strlen()関数では文字列の長さを求めることができます。
#include <iostream>
#include <vector>
using namespace std;
int main() {
char str[100];
cout << "文字列(英数字)を入力してください。\n";
cin >> str;
cout << "文字列の長さは" << strlen(str) << "です。\n";
return 0;
}
参考文献
この記事は以下の情報を参考にして執筆しました。
やさしいC++ 第4版 (「やさしい」シリーズ)