下コードは5個の整数から構成されるグループの合計を求めるプログラムです
グループは全部で10個で各整数値はキーボードから読み込みます
ただし99999を入力すると全体の入力を終了し、88888を入力すると現在読み込み中のグループの入力を終了するプログラムを作りたくて書いたコードです
ただ、このコードだと88888を入力した際にも全体の入力が終了します
どうすればいいでしょうか?
Ruby
1puts "整数を加算します" 2total = 0 3i = 1 4while i <= 10 5 puts "■第#{i}グループ" 6 j = 0 7 while j < 5 8 print "整数:" 9 t = gets.to_i 10 if t == 99999 11 break 12 elsif t == 88888 13 next 14 end 15 j += 1 16 total += t 17 end 18 i += 1 19end 20puts "\n合計は#{total}です"
理想の出力結果をサンプルで追記いたします
整数を加算します
■第1グループ
整数:175
整数:634
整数:394
整数:88888 ここで第1グループから抜け入力を第1グループの入力を終了し第2グループへ
■第2グループ
整数:555
整数:777
整数:88888 ここで第2グループから抜け入力を第1グループの入力を終了し第3グループへ
■第3グループ
整数:99999 ここで全体の入力を終了する
合計は2535です ここで全グループの合計を出力
88888で現在のグループの入力を終了
99999ですべての入力を終了し合計を出力
どういった動きを期待しているのかいまいちわかりません。
サンプルでいいので入力値と出力値を示していただけますか?
パッと見た感じ常に "■第1グループ" を出力し、
`while i <= 10` のループを抜けることがないようなコードに見えます。
「88888を入力した際にも全体の入力が終了します」の終了とは
`puts "\n合計は#{sum}です"` の出力がされて
文字通り処理が完了するという意味でしょうか?
上記の通りループを抜ける手段がないように見えますし、
加えてsum変数が用意されてないためエラーが起きるはずなので、
それはありえない気がしますが...。
sumではなくtotalでした!
皆さんのコメント解決方法を見ながらコードを書いています!!!????
今の動き的には99999を入力したときにグループを抜けれる状態です!
そこをどうにかしたいですね
おそらくあれなんですよね抜けたい部分で抜けれてないので
抜ける入れ子の部分を変えれば行けるのかなと思いif分の位置をずらしてみたりしてます
nextで戻りたい箇所breakで終了させたい部分を指定できればいいんですけど、、、
> 今の動き的には99999を入力したときにグループを抜けれる状態です!
すみません、解釈違いでした。
次のグループに移行するってことですかね。
質問を質問で返すようで申し訳ないのですが、
break と next の仕様は理解していますか?
breakは最も内側のループを抜ける
つまりこのコードだとwhile j<5のループを抜ける(グループ)
nextは最も内側の次にループに行くのでグループを抜けられない?。。。
やっぱり99999を打つとグループからは抜けれて次のグループに行けます
■第1グループ
整数:99999
■第2グループ
整数:999999
整数:2
整数:99999
■第3グループ
コンソールはこんな感じです
あとjもちゃんと動いていて5つの整数を入力すると次のグループに行けますΣ(・ω・ノ)ノ!
説明が稚拙で申し訳ないっす
はい!次のグループに移行できるという意味です
breakとnextの仕様はわかってないんだと思います、、、
書かれているプログラムと実行結果が合いません。
ちゃんと書きましょう。
回答2件
あなたの回答
tips
プレビュー