以下の練習問題をやっているのですが、どうもうまくいきません。
(1)担当名が"end"になる迄、担当名と売上を入力する。
(2)売上合計を求める。
(3)各担当の売上が売上合計の何%になるかの比率の計算を行う。
(4)担当名、売上、比率を表示する。
どこがいけないのがご教授頂けますでしょうか。
よろしくお願い致します。
***********************************
#! ruby -E Windows-31J:utf-8
# coding: utf-8
kensu = 0
uriage = 0
goukei = 0
uriage_t = [20]
tanto = [10]
tanto = [20][10]
puts("担当名がendで終了")
print(kensu = kensu + 1, "人目の担当名は")
tanto = $stdin.gets.chomp!
tanto.gsub!("\n", "")
print("売上")
uriage = $stdin.gets.chomp!.to_i
while tanto != "end"
kensu = kensu
goukei = goukei + uriage
uriage_t = uriage
tanto_t = tanto
print(kensu = kensu + 1, "人目の担当名は")
tanto = $stdin.gets.chomp!
tanto.gsub!("\n", "")
if tanto != "end"
print("売上")
uriage = $stdin.gets.chomp!.to_i
end
end
kensu = kensu + 1
goukei = goukei + uriage
uriage_t = uriage
tanto_t = tanto, "合計"
puts "________________________________________"
puts " 担当 売上 比率 "
puts "________________________________________"
for i in kensu
kensu += i
ritu = uriage * 100 / goukei
puts "担当名は#{tanto} 売上は#{uriage_t}円 比率は#{ritu}%"
end
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
何もかもおかしい。
あなたにはその問題は難しすぎます。とりあえず、
(1) 以下を繰り返す
(2) 数字を入力する。0が入力されたら今までの合計を表示して終わる
(3) 入力された数字を合計する
をやってみてください。
No.2
- 回答日時:
配列の使い方を理解できれば動くようになると思います。
気になる無駄な処理がかなりありますが、それは他人の書いたプログラムを見て勉強すれば徐々に見やすいプログラムを書けるようになると思います。
ぱっと見で分かる範囲で
uriage_t = [20]
tanto = [10]
tanto = [20][10]
同じ変数名が並んでいます、下の方はtanto_tなのでしょうね。
それと配列を確保したいのだと思うのですが、
uriage_t = [20]では20個の要素を確保するのではなく、20という数値1個が入った配列が代入されます。
このような場合は
uriage_t = []
とするのが良いと思います。
先に書いた3行は
uriage_t = []
tanto_t = []
とします。
tanto = [10]は後でtantoに代入されますので必要ありません。
uriage_t に保存したいとすると
uriage_t << uriage
で配列に追加されていきます。
あとは省略しますが、考えてみてください。
Ruby用のデバッガを使えば、一行ずつ実行して結果を確認することができますので、
利用してみてください。
No.3
- 回答日時:
できるだけ質問者様が書かれたソースをもとに作り直してみました。
以下のようにしてください。
----------------------------------------------------
#! ruby -E Windows-31J:utf-8
# coding: utf-8
kensu = 0
goukei = 0
uriage_t = Array.new
tanto_t = Array.new
puts("担当名がendで終了")
while true
print(kensu + 1, "人目の担当名は")
tanto = $stdin.gets.chomp!
tanto.gsub!("\n", "")
if tanto == "end"
break
end
print("売上")
uriage = $stdin.gets.chomp!.to_i
kensu = kensu + 1
goukei = goukei + uriage
uriage_t << uriage
tanto_t << tanto
end
kensu = kensu + 1
uriage_t << goukei
tanto_t << "合計"
puts "________________________________________"
puts " 担当 売上 比率 "
puts "________________________________________"
(0...tanto_t.size).each do |i|
if goukei > 0
ritu = uriage_t[i] * 100 / goukei
else
ritu = 0
end
puts "担当名は#{tanto_t[i]} 売上は#{uriage_t[i]}円 比率は#{ritu}%"
end
---------------------------------------------------------
尚、合計が0円の時に、異常終了しますので、異常終了しないように
プログラムを修正しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- 簿記検定・漢字検定・秘書検定 売上諸掛りについて 当社はブンタ株式会社ヘ商品100円に送料10円を加えた合計額で販売し、代金は掛け 3 2022/04/28 10:40
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- その他(税金) 確定申告にて 3 2023/02/10 21:59
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- 法人税 浄水器レンタル 経理処理 1 2023/06/29 17:16
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- 環境・エネルギー資源 改定省エネ法が、2023年4月に施行されました。 1 2023/08/11 01:03
- その他(プログラミング・Web制作) Python3 プログラミング初心者です。入力されたものをすべてそのままprintで出力するというも 1 2022/12/21 01:02
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初心者が簡単なPowerShellスク...
-
初心者プログラミング
-
COLUMN(1:1)の意味を教え...
-
エクセルへのデータの貼付時に...
-
excelの、ある数式内の{}の意...
-
エクセル、この関数の意味は?
-
配列に入った文字列を結合した...
-
【エクセル】 関数による電子...
-
VBAで配列内のマッチ
-
丸いアイコンを丸く並る方法
-
MATLABで配列をファイルへ書き...
-
VBAのWorksheetFunctionの引数...
-
Javaのプログラムをルビー言語に。
-
Rubyのプログラミングに詳しい...
-
VBSで特定の文字列が含まれる場...
-
○桁にある数値を取得する VB.N...
-
C言語 exitの使い方
-
Access2003 オートナンバーの現...
-
VBAでダブルコーテーション入り...
-
[VBS]変数を定数に変換する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
vbsでテキストファイル内の文字...
-
エクセルへのデータの貼付時に...
-
数値を浮動小数点32bitHEXコー...
-
COLUMN(1:1)の意味を教え...
-
初心者が簡単なPowerShellスク...
-
VBAのWorksheetFunctionの引数...
-
VBSで特定の文字列が含まれる場...
-
VB 配列の内容をファイルに書...
-
初心者プログラミング
-
VB6で配列を文字列に変換する方...
-
VBAで配列に文字列が入らない?
-
copyRecordsetの数値16桁以上に...
-
【エクセル】 関数による電子...
-
エクセル、この関数の意味は?
-
○桁にある数値を取得する VB.N...
-
RichTextBoxの改行を認知してく...
-
rubyによる2次元配列形式のデー...
-
ruby 1.8.7 で、多次元配列をソ...
おすすめ情報