年齢を入力して年齢が−1以下になるまでループを回し続ける。
その後、整数iに入力した年齢を10で割る(割った理由は一桁の配列で済ますことができるから)
その後、年代配列と入力した年齢を比較?しどうカウントしていけば良いのかがわかりません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
70歳以上はインデックス7に格納したのであれば、80歳だと、80/10=8 とインデックスの範囲を超えてしまうので例外処理が必要ではないでしょうか?
c
1 2int main() 3{ 4 int cnt[8] = {0}; 5 int age; 6 while (true) { 7 scanf("%d", &age); 8 if (age < 0) 9 break; // 負の値が入力された場合 10 11 // index = min(age / 10, 7) 12 int index = age / 10; 13 if (index > 7) 14 index = 7; // 70歳以上はすべて index=7 15 16 cnt[index]++; 17 } 18 19 for(int i = 0; i < 8; i++) 20 printf("age %d: %d ", i, cnt[i]); 21} 22
投稿2018/09/27 08:38
総合スコア21956
0
その後、年代配列と入力した年齢を比較?し
比較する必要はなさそうです。
整数iに入力した年齢を10で割る
この動作で年齢を配列の要素番号に変換してますよね?
[追記]このとき、変換した要素番号が8以上の時は7にする処理が必要です。
あとはこの変換した値を使って配列の値をインクリメントすればおkです。
(擬似コード上はやってる気がしますが。)
** 擬似コードの書き方とかその辺について。**
あげればキリがないというか私の好みに偏ってしまうので一般的な部分だけ。
また、学校の課題なのでそちらで指示がある場合にはそちらを優先してください。
- ループ、分岐がどこからどこまでなのかわかりにくいです。
擬似コードを書かれているようなので、インデントをつけることをおすすめします。
(マークは付いていますが、入れ子じゃない箇所もあるのでよくわかりません。)
- 書いたコードは自分で指とかペンで指しながら確認してみましょう。
右側にせっかく入力例があるので、自分が書いた擬似コードを
頭から指やペンでなぞって擬似コードの流れを確認しましょう。
その際に、別途メモ用の紙があると変数の値の変化とか確認できてgoodです。
コードの流れを見れると、後々コーディングで意図せぬ動きが起きたときに
自分でどこが悪いのかみつけやすくなります。
投稿2018/09/27 08:29
編集2018/09/27 09:21総合スコア5158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/27 08:41
2018/09/27 08:45
2018/09/27 09:04
2018/09/27 09:24
2018/09/27 09:36
2018/09/27 09:46
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。