2017年09月10日
《その22》 多重ループ
( p.109 演習3-17,演習3-18,演習3-19,演習3-20,演習3-21,演習3-22)
新版 明解C++ 入門編 p.109 演習3-17
季節を求める List 3-1(p.82)の月の読込みにおいて、1 〜 12 以外の値が入力された場合は、再入力させるように変更したプログラムを作成せよ(do文の中に do文が入る二重ループとなる)。
// p109_演習3-17
#include <iostream>
using namespace std;
int main()
{
char retry;
do {
int m;
do {
cout << "何月ですか : "; cin >> m;
} while (m < 1 || m > 12);
switch (m) {
case 3:
case 4:
case 5: cout << "春です。\n"; break;
case 6:
case 7:
case 8: cout << "夏です。\n"; break;
case 9:
case 10:
case 11: cout << "秋です。\n"; break;
default: cout << "冬です。\n"; break;
}
cout << "\nもう一度? Y…Yes/N…No:"; cin >> retry;
} while (retry == 'Y' || retry == 'y');
}
新版 明解C++ 入門編 p.109 演習3-18
九九の表を表示する List 3-13(p.106)を、setw操作子を用いることなく実現するように書きかえたプログラムを作成せよ。
// p109_演習3-18
#include <iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
int k = i * j;
k > 9 ? cout << " " : cout << " ";
cout << k;
}
cout << '\n';
}
}
新版 明解C++ 入門編 p.109 演習3-19
n段の正方形を表示するプログラムを作成せよ。
// p109_演習3-19
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "正方形を表示します。1辺の*の個数を入力:"; cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
cout << '*';
cout << '\n';
}
}
新版 明解C++ 入門編 p.109 演習3-20
List 3-14 は左下側が直角の直角三角形を表示するプログラムであった。直角が左上側、右下側、右上側の直角三角形を表示するプログラムをそれぞれ作成せよ。
// p109_演習3-20
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "直角三角形を表示します。段数を入力:"; cin >> n;
cout << "◆左上が直角\n";
for (int i = n; i >= 1; i--) {
for (int j = 1; j <= i; j++)
cout << '*';
cout << '\n';
}
cout << '\n';
cout << "◆右下が直角\n";
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) cout << ' ';
for (int j = 1; j <= i; j++) cout << '*';
cout << '\n';
}
cout << '\n';
cout << "◆右上が直角\n";
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i - 1; j++) cout << ' ';
for (int j = 1; j <= n - i + 1; j++) cout << '*';
cout << '\n';
}
cout << '\n';
}
新版 明解C++ 入門編 p.109 演習3-21
n段のピラミッドを表示するプログラムを作成せよ。
第i行目には (i - 1) * 2 + 1 個の '*'記号を表示すること(最終行である第n行目
には (n - 1) * 2 + 1 個の '*'記号を表示することになる)。
// p109_演習3-21
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "ピラミッドを表示します。段数を入力:"; cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i ; j++) cout << ' ';
for (int j = 1; j <= 2 * i - 1; j++) cout << '*';
cout << '\n';
}
}
新版 明解C++ 入門編 p.109 演習3-22
n段の下向き数字ピラミッドを表示するプログラムを作成せよ。第i行目には i % 10 によって得られる数字を表示すること。
// p109_演習3-22
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "逆さの数字ピラミッドを表示します。段数を入力:"; cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i - 1; j++) cout << ' ';
for (int j = 1; j <= 2 * (n - i) + 1; j++) cout << i % 10;
cout << '\n';
}
}
/*
**********************************************
左空白の個数 数字の個数
1段目 0 (2 * n - 1)
2段目 1 (2 * n - 1) - (1) * 2
3段目 2 (2 * n - 1) - (2) * 2
i段目 i - 1 (2 * n - 1) - (i - 1) * 2
**********************************************
上の (2 * n - 1) - (i - 1) * 2 は、計算すると 2 * (n - i) + 1 になります。
*/
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6683767
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック