第十三回課題
「テレビクラスを作ってみよう」の冒頭のプログラムを実行できる状態で課題を始めよう。
手を加える前のプログラムではチャンネル表示は「チャンネルは8です。」などと数字が表示されるだけであるが、
これを以下の表に記載された数字なら局名が表示されるようにして欲しい。
つまり、チャンネル 8 なら「チャンネルはフジテレビです。」のように。
また、「その他」の「そのまま数字が出るようにする」、とは、
「tv.setChannel(30);」の後での表示では「チャンネルは30です。」と表示されるようにする、という意味である。
チャンネル
|
局名
|
1
|
NHK
|
3
|
NHK教育
|
4
|
日本テレビ
|
5
|
テレビ朝日
|
6
|
TBS
|
7
|
テレビ東京
|
8
|
フジテレビ
|
その他
|
(そのまま数字が出るようにする)
|
この課題を解くには、printStatus 関数の中身に手を加え、チャンネル表示方法を変更すれば良い。
すなわち、以下の部分である。
void Television::printStatus()
{
if(power == 1)
{
cout << "電源はオンです。";
}
else
{
cout << "電源はオフです。";
}
cout << "チャンネルは" << channel << "です。";
cout << "ボリュームは" << volume << "です。\n";
}
この部分で、power の値が 1 か 0 かを if~else 文で分岐させているのはヒントになる。
ただし、チャンネルの場合は分岐の数が多いので if~else 文をそのまま使っても課題は解けない。
今回の課題を解くにあたっては、「第六回-01 else if の利用」が必須となるだろう。
特に、「if」、「else if」、「else」を適切に用いないと「『その他』の『そのまま数字が出るようにする』」の部分が実現できない。
プログラムの動作チェックのためには、main関数の下記の部分を
tv.printStatus(); // 確認のために状態表示
tv.setPower(1); // 電源オン
tv.setChannel(8); // 8チャンネルにセット
tv.setVolume(10); // ボリュームを10に
tv.printStatus();
tv.setChannel(4); // 4チャンネルにセット
tv.printStatus();
以下に変更すると便利かも知れない。
tv.setPower(1); // 電源オン
tv.setChannel(1);
tv.printStatus();
tv.setChannel(3);
tv.printStatus();
tv.setChannel(4);
tv.printStatus();
tv.setChannel(5);
tv.printStatus();
tv.setChannel(6);
tv.printStatus();
tv.setChannel(7);
tv.printStatus();
tv.setChannel(8);
tv.printStatus();
tv.setChannel(30);
tv.printStatus();
正しくプログラムを書ければ以下の出力が得られるだろう。
電源はオンです。チャンネルはNHKです。ボリュームは0です。
電源はオンです。チャンネルはNHK教育です。ボリュームは0です。
電源はオンです。チャンネルは日本テレビです。ボリュームは0です。
電源はオンです。チャンネルはテレビ朝日です。ボリュームは0です。
電源はオンです。チャンネルはTBSです。ボリュームは0です。
電源はオンです。チャンネルはテレビ東京です。ボリュームは0です。
電源はオンです。チャンネルはフジテレビです。ボリュームは0です。
電源はオンです。チャンネルは30です。ボリュームは0です。
なお、「その他」のチャンネルは 30 に代表させたが、30 以外でなおかつチャンネル名がない数値に対しても数字でチャンネルが表示されねばならない。
提出は、変更した printStatus 関数のみを回答せよ。
すなわち、下記の部分である。
void Television::printStatus()
{
if(power == 1)
(中略)
cout << "ボリュームは" << volume << "です。\n";
}
オンラインコンパイラで C/C++ を自習しように戻る