2017年09月18日
《その32》 配列(p.179演習5-4,演習5-5,演習5-6,演習5-7)
新版明解C++入門編 p.179 演習5-4
連続する要素が同じ値とならないように、演習 5-3 のプログラムを改変したプログラムを作成せよ。
たとえば、{1, 3, 5, 5, 3, 2} とならないようにすること。
// p179_演習5-4
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
const int num = 6;
int a[num];
for (int i = 0; i < num; i++) {
a[i] = rand() % 10 + 1;
while (i > 0 && a[i] == a[i - 1])
a[i] = rand() % 10 + 1;
cout << "a[" << i << "] = " << a[i] << " ";
}
cout << '\n';
}
新版明解C++入門編 p.179 演習5-5
異なる要素が同じ値とならないように、演習 5-3 のプログラムを改変したプログラムを作成せよ。
たとえば、{1, 3, 5, 6, 1, 2} とならないようにすること。
// p179_演習5-5
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
const int num = 6;
int a[num];
for (int i = 0; i < num; i++) {
bool fail = false; // 他の要素に同じ値が無ければ0,あれば1
do {
a[i] = rand() % 10 + 1;
for (int j = 0; j < i; j++) {
if (a[i] == a[j]) {
fail = true; break;
}
else
fail = false;
}
} while (fail);
}
for (int i = 0; i < num; i++)
cout << "a[" << i << "] = " << a[i] << " ";
cout << '\n';
}
新版明解C++入門編 p.179 演習5-6
要素型が int型で要素数が 15の配列の全要素に 1 〜 10 の乱数を代入して、棒グラフで値を表示するプログラムを作成せよ。
棒グラフは記号文字 '*' を横方向に並べたものとする。
// p179_演習5-6
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
const int num = 15;
int a[num];
for (int i = 0; i < num; i++)
a[i] = rand() % 11;
for (int i = 0; i < num; i++) {
cout << "a[" << setw(2) << i << "] = " << setw(2) << a[i] << " ";
for (int j = 0; j < a[i]; j++)
cout << "*";
cout << '\n';
}
}
新版明解C++入門編 p.179 演習5-7
前問を書きかえて、縦方向の棒グラフによって値を表示するプログラムを作成せよ。添字を 10で割った剰余を最下段に表示すること。。
// p179_演習5-7
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
const int num = 15;
int a[num];
for (int i = 0; i < num; i++)
a[i] = rand() % 11;
for (int h = 10; h > 0; h--) {
for (int i = 0; i < num; i++) {
if (a[i] >= h)
cout << " * ";
else
cout << " ";
}
cout << '\n';
}
for (int i = 0; i < num; i++)
cout << "---";
cout << '\n';
for (int i = 0; i < num; i++)
cout << setw(2) << a[i] << " ";
cout << " ← 発生した乱数(0〜10)の値\n";
for (int i = 0; i < num; i++)
cout << setw(2) << i << " ";
cout << " ← 配列a[n]の添字nの値\n";
for (int i = 0; i < num; i++)
cout << setw(2) << i % 10 << " ";
cout << " ← 添字を10で割った剰余\n";
}
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6713278
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック