大学の情報の問題で難しくてできなくて困っています。
できる方がいれば回答をお願いします。
東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。
申し訳ないのですが
表をのせられなかったのでこちらから参照してください
東京都水道局のホームぺージです
http://www.waterworks.metro.tokyo.jp/life/r_keis …
水道料金一か月の表の一般用の部分です
計算式 (基本料金+従量料金)*1.05(1円未満の端数は切り捨て)
計算例:呼び径20ミリで1か月24使用した場合の料金
(基本料金1170円+従量料金2042円)*1.05=3372円
≪従量料金内訳≫
1~5 → 0円/*5= 0円
6~10 → 22円/*5= 110円
11~20 → 128円/*10 = 1280円
21~24 → 163円/*4 = 652円
小計 2042円
【プログラムの仕様】
1.呼び径は(1)13mm、(2)20mm、・・・(12)300mm以上の中から該当する番号を、水道使用量は㎥単位で整数値を、どちらもInputbox関数で取得する。呼び径番号取得ではInputboxに番号と呼び径の対応関係を表示せよ。この際、表示文字列を複数部分に分割して、行末を文字列連結演算子と継続指定「 & _ 」することにより複数行で記述する。
2.入力された水道管の呼び径を番号をもちいてSelectCase構文で基本料金を決定する。
3.従量料金のけいさんでは、まずどの呼び径の料金区分で計算するかをSelectCase構文またはIf文で決定して、各区分の料金表の単価を使用量の各増分に適用して、増分毎の料金を求めて積算する。例にも示した(2)の呼び径の場合は、使用量を複数の増分に分けて、1~5;、6~10、11~20、21~30、・・・、1001以上の各増分に異なる単価を適用する。
4.基本料金と従量料金の合計金額に消費税を加えたものが水道料金となる。この計算を行うと小数点以下の金額を切り捨てるため、Int関数の引数に計算式を書き入れ、その関数値を整数型変数に代入すればよい。
という初心者に対して大変難しいもんだいです。
回答をお願いします。 数字に単位が付いてませんがm^3です
No.5ベストアンサー
- 回答日時:
プログラムが得意な人たちや自分としては大変簡単に感じる問題ですが、分からないものは分からない、という気持ちもわからなくはないですが……
このサイトでの答えだけの書きこみはご法度なので以下はヒントです。半分答えですが。。。
仕様1.分かると言うことで省略
仕様2.SelectCase構文を使う、という時点で答えはひとつしかないですね。
Select Case 判断する変数
Case 判断値その1
判断する変数の値が判断値その1だったら行う命令
Case 判断値その2
判断する変数の値が判断値その2だったら行う命令
Case 判断値その3
判断する変数の値が判断値その3だったら行う命令
……
Case Else
判断する変数の値がどれにも該当しなかったら行う命令
End Select
判断する変数、判断値、判断する変数の値が判断値だったら行う命令、この三つの内容が分かればSelectCase構文を用いたコードの完成です。そして問題文から、仕様1で取得した番号、呼び径番号の種類、呼び径番号による基本料金を決定すること、が決まっています。なので、呼び径番号が1だったら、呼び径番号番号が2だったら……という感じに数珠繋ぎに考えればOKです。
仕様3.これはSelectCase構文にするかIf文にするかで書く答えそのものが変わりますが、それぞれ考え方及びその扱いは変わりませんので自分に簡単なほう(慣れているほう、よく分かるほう)を選びましょう。
「各区分の料金表の単価を使用量の各増分に適用して、増分毎の料金を求めて積算する」
こういっているので、1~5立方mの単価での料金、6~10立方mの単価での料金、11~20立方mの単価での料金……を順次計算してそれぞれを加算していくプログラムを作らなくてはいけません。
簡単な方法としては、まずは仕様2と同じようにSelectCase構文を作り、呼び径番号毎に命令を区分けします。その命令の中に、複数のIf文を用いてうまく単価の料金を計算するようにしましょう。調べて答えを探すのではなく、パズルを解くように頭をひねってIf文の応用を考えてください。
もし使用量が1以上5未満だったら1~5立方mの単価での料金は……もし使用量が5以上だったら1~5立方mの単価での料金は……もし使用量が6未満だったら6~10立方mの単価での料金は……もし使用量が6以上10未満だったら6~10立方mの単価での料金は……もし使用量が10以上だったら6~10立方mの単価での料金は……
このときはこうする、そのときはこうする、あのときはこうする、どれでもなかったらこうする……こんな感じにひとつひとつIf文を書いていくのが現時点ではベストだと思います。そりゃもっといい方法がたくさんあるんですけどね、今は気にせずにIf文連打。問題がIf文使えと書いているのですから。
仕様4.仕様2と仕様3で各料金が決定するのですから、あとは消費税を計算するだけです。
「Int関数の引数に計算式を書き入れ、その関数値を整数型変数に代入すればよい。」
ここまで言い切っているので答えはもう決まっているようなものです。基本なことですが、関数、引数、変数の書く意味を調べて理解できれば仕様4の問題は簡単です。”整数型変数”ということなのでちゃんと整数型であることを宣言することを忘れないこと。
ひたすら調べて答えを求めるのではなく、パーツを組み合わせてうまく動くものを作ると言う気持ちで取り組んでみてください。
この回答への補足
回答をみて気がついたのですが
Sub ex51() '問題5
Dim x As Integer, y As Integer
x = InputBox("呼び径を丸番号の数字で選択してください。 " & _
"(1) 13mm (2) 20mm (3) 25mm " & _
"(4) 30mm (5) 40mm (6) 50mm " & _
"(7) 75mm (8) 100mm (9) 150mm " & _
"(10) 200mm (11) 250mm (12) 300mm以上 ")
y = InputBox("今月の水道使用量を立法メートル単位で入力してください。")
一番をこんな感じにしたのですが間違えてますよね。
yはあっているとおもうのですがxがまちがえています
どういう風にすればいいのでしょうか?
回答おねがいします
気持ちを察していただきありがとうございます。
ほんとに初心者なんでできないんです。
丁寧な回答をしていただいてありがとうございます。
ヒントを元にやってみますのでまたわからないところがでてきたら
また回答してもらえるとありがたいです。
No.6
- 回答日時:
この質問の対処法は、こまめな、場合分けに尽きるのです。
Select caseの問題であるのですが、
(1)これはいわばルール記述法ですが
今はあれこれ考えられないでしょうが、この騒ぎが収まった後、興味があれば、エクセルの場合、
(2)表引き法を考えると勉強になりますよ。
(A)料金表をエクセルシートの表に作る。
(B)口径でVLOOKUP(またはMATCH)関数を使い該当行を得る。ー>基本料金を知る。
(C)使用量でHLOOKUP(またはMATCH)関数を使い該当列を得る。ー>1立米あたりの料金を得る。
後は使用量x単価の掛け算、税計算の問題と基本料金の足し算です。
(注意)ただし一般用と公衆浴場分は別表に作る。
後の表検索利用の便宜上、2列以上にまたがって同じ単価の区画も上の使用量の区分に従って、同じ値を埋めておくこと。
ーー
VLOOKUP・MATCH関数ははVBAでも使えます。
WEBにVLOOKUP・MATCH関数の解説はあふれています。
「VBA VLOOKUP、VBA MMATCH」でも記事が沢山出ます。
ーーー
この方法の良いところは、公衆+一般やその他の大きな体系が変更無い限り、修正があっても、テストが簡単で済みます。
コードが非常にすっきりする。数行で済みます。
No.4
- 回答日時:
1) で呼び径番号を取得しているのですから
2) の部分は
Select case 呼び径番号
case 1 ' 13mm
基本料金 = 860
case 2 ' 20mm
基本料金 = 1170
case 3 ' 25mm
基本料金 = 1460
case 4 ' 30mm
基本料金 = 3450
...
end select
となることが理解できますか?
これが分からないとなると もっと基本的な部分からやり直しですが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 格安スマホ・SIMフリースマホ 今 ahamoを使っていて 4898円以下になる携帯会社があれば乗り換えたいです 20GBと24時間 9 2022/09/27 07:43
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- 簿記検定・漢字検定・秘書検定 簿記3級 仕訳の問題です。 2 2022/09/23 22:03
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- 政治 安倍自公政権のアベノミクスとやらで、日本が経済成長し、景気・内需も良くなった? 2 2022/05/04 10:30
- 日本株 SBIのHPに手数料は100万円まで無料だと書かれているのですが、、、。何故でしょうか。 1 2022/04/04 20:48
- 電気・ガス・水道 レオパレスのガス代(トーエルLPG)について 1 2022/04/18 11:39
- 高校 日商簿記3級の勉強中なのですが 精算表が完成せず困っています。 こちらの問題の回答を教えていただきた 2 2023/03/02 09:07
- 電気・ガス・水道 電気代がぼったくられているかについて 7 2022/10/30 06:09
- 通信費・水道光熱費 プロパン物件からオール電化物件に引っ越したら、光熱費は何パーセントくらい減らせますか? 3 2022/08/25 11:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
着信拒否はしていないのに…私か...
-
別ファイルを開かず、INDIRECT...
-
友人(docomo)に何度着信して...
-
千円代の代は台ですか?代ですか?
-
携帯 利用停止中の相手に
-
祝前日って日曜日は含まれますか?
-
二人用の部屋、最初一人で泊ま...
-
友人に前の日に映画のチケット...
-
バス
-
自分の家の電話番号を知る方法
-
「お客様のご都合により、お繋...
-
ホテルでシングルルームで2人泊...
-
休前日とは、何曜日のことですか?
-
外食に行った際、高校生は子供...
-
家にパソコンがなくどうしてもC...
-
区間運賃が同じ場合の定期券の...
-
切手は、郵便料金以上の額面金...
-
ホテルや旅館などで、複数人部...
-
Booking.comでホテルを探してい...
-
埼玉県の大行院神明殿について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
着信拒否はしていないのに…私か...
-
別ファイルを開かず、INDIRECT...
-
小学校卒業後、中学校入学まで...
-
千円代の代は台ですか?代ですか?
-
二人用の部屋、最初一人で泊ま...
-
埼玉県の大行院神明殿について...
-
切手は、郵便料金以上の額面金...
-
家にパソコンがなくどうしてもC...
-
携帯 利用停止中の相手に
-
ホテルや旅館などで、複数人部...
-
祝前日って日曜日は含まれますか?
-
セクキャバの値段について
-
「楽天グループ電話サービス」...
-
バス
-
ホテルでシングルルームで2人泊...
-
カインズは店舗で購入した商品...
-
自分の家の電話番号を知る方法
-
外食に行った際、高校生は子供...
-
休前日とは、何曜日のことですか?
-
友人(docomo)に何度着信して...
おすすめ情報