2017年09月08日
《その19》 do文( p.82 〜 p.87)
新版 明解C++ 入門編 p.83 演習3-1
// p083_演習3_1
#include <iostream>
using namespace std;
int main()
{
char retry;
do {
int n;
cout << "整数値:"; cin >> n;
if (n > 0)
cout << "その値は正です。\n";
else if (n < 0)
cout << "その値は負です。\n";
else
cout << "その値は0です。\n";
cout << "もう一度? Y…Yes/N…No:"; cin >> retry;
} while (retry == 'Y' || retry == 'y');
}
"もう一度? Y…Yes/N…No:" という画面メッセージに対し、入力されるのは1文字(Y,y,N 等)だけです。
上のプログラムでは、その 1文字を char型の変数retryで受け取るようにしました。
p.92に、単一の文字(char型の文字リテラル)を表現するには 'Y','y'のように単一引用符「 ' 」で囲む、と書かれています。なので、do文の (条件式) は
(retry == 'Y' || retry == 'y')
となります。
p.82 List3-1 では、string型の変数retryで "Y","y"等の文字列リテラルを受け取っていますが、
この場合は <string>ヘッダのインクルードが必要になります。そして、do文の (条件式) は
(retry == "Y" || retry == "y")
となります。
新版 明解C++ 入門編 p.87 演習3-2
// p087_演習3_2
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
int no = rand() % 90 + 10;
int x;
cout << "10〜99 の整数を当ててください。\n";
do {
cout << "整数(10〜99)を入力:"; cin >> x;
if (x > no)
cout << "\aそれより小さい\n";
if (x < no)
cout << "\aそれより大きい\n";
} while (x != no);
cout << "正解!\n";
}
新版 明解C++ 入門編 p.87 演習3-3
// p087_演習3_3
#include <iostream>
using namespace std;
int main()
{
int n1, n2;
do {
cout << "10〜99の異なる2整数を入力:"; cin >> n1 >> n2;
} while (n1 < 10 || n2 < 10 || n1 > 99 || n2 > 99 || n1 == n2);
if (n1 > n2) {
int t = n1; n1 = n2; n2 = t;
}
do {
cout << n1 << " ";
n1 = n1 + 1;
} while (n1 <= n2);
cout << '\n';
}
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6677518
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック