• ベストアンサー

VBの条件判断の応用問題

大学の情報の問題で難しくてできなくて困っています。 できる方がいれば回答をお願いします。 東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。 申し訳ないのですが 表をのせられなかったのでこちらから参照してください 東京都水道局のホームぺージです http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm 水道料金一か月の表の一般用の部分です 計算式 (基本料金+従量料金)*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です

  • 40one
  • お礼率45% (16/35)

質問者が選んだベストアンサー

  • ベストアンサー
  • benelli
  • ベストアンサー率51% (78/152)
回答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の問題は簡単です。”整数型変数”ということなのでちゃんと整数型であることを宣言することを忘れないこと。 ひたすら調べて答えを求めるのではなく、パーツを組み合わせてうまく動くものを作ると言う気持ちで取り組んでみてください。

40one
質問者

お礼

気持ちを察していただきありがとうございます。 ほんとに初心者なんでできないんです。 丁寧な回答をしていただいてありがとうございます。 ヒントを元にやってみますのでまたわからないところがでてきたら また回答してもらえるとありがたいです。

40one
質問者

補足

回答をみて気がついたのですが 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がまちがえています どういう風にすればいいのでしょうか? 回答おねがいします

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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」でも記事が沢山出ます。 ーーー この方法の良いところは、公衆+一般やその他の大きな体系が変更無い限り、修正があっても、テストが簡単で済みます。 コードが非常にすっきりする。数行で済みます。

40one
質問者

補足

ちゃんと問題通りにできたらためしてみます。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

1) で呼び径番号を取得しているのですから 2) の部分は Select case 呼び径番号 case 1 ' 13mm 基本料金 = 860 case 2 ' 20mm 基本料金 = 1170 case 3 ' 25mm 基本料金 = 1460 case 4 ' 30mm 基本料金 = 3450 ... end select となることが理解できますか? これが分からないとなると もっと基本的な部分からやり直しですが

40one
質問者

補足

理解できます。やってみます

  • morigann
  • ベストアンサー率17% (57/329)
回答No.3

2が分からないという事は、出題文以前に問題があるように思われます。 Select~Case文はどういった構文か理解されてますでしょうか? ご質問者様が分かっている範囲で補足お願い致します。 もし分からない場合は、書店にてVBの書籍がたくさんありますのでご購入されてはいかがでしょうか? 問題文の1が分かるという事はVBの使い方は分かっておられるようですので、構文ごとに調べる事が出来て使用例が載っているのが良いと思います。

40one
質問者

補足

頭がかたいんで基本がわかっても応用できないのです。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

1,2は簡単に出来ると思いますが・・・。 3の部分はじっくりと考えるしか無いでしょうね。 3が出来れば4は簡単。 説明文には基本的な方法が書かれているので、難しく考え過ぎない事です。

40one
質問者

補足

1はできたのですが2の入力方法がわからなく、そのさきはつまってしまっています。教科書にも詳しく書いていないのでやり方などを教えていただけるとありがたいです。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>という初心者に対して大変難しいもんだいです。 見た所、初心者のために一から十まで事細かに指示された非常に優しい問題とお見受けします。 丸投げは削除されるので、40one さんがわからない部分を補足するといいよ。

40one
質問者

補足

はやくすすめられてわからないままで教科書をみて 考えているのですが何回やってもうまくいきません。 1番はできたので2番以降の補足をしてもらえると ありがたいです

関連するQ&A

  • VBの条件判断の応用問題

    大学の情報の問題で難しくてできなくて困っています。 できる方がいれば回答をお願いします。 東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。 申し訳ないのですが 表をのせられなかったのでこちらから参照してください 東京都水道局のホームぺージです http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm 水道料金一か月の表の一般用の部分です 計算式 (基本料金+従量料金)*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関数の引数に計算式を書き入れ、その関数値を整数型変数に代入すればよい。 という初心者に対して大変難しいもんだいです。 回答をお願いします。

  • VBの問題です

    VBの条件判断の応用問題 大学の情報の問題でヒントをもらいやってみたのですがうまくできません。自分でやったものをのせたのでどこがどのように間違えているか指摘してもらえるとありがたいです。 東京都水道局では23区内の水道料金(月額)を水道管の口径(以下で呼び径と記述)と月の水道使用料により、次の表に基づいて計算する。水道管の呼び径の番号と水道使用量を性数値で入力すると、次表と計算式に従い、次のページの仕様を満たす水道料金計算のプログラムを作れ。 申し訳ないのですが 表をのせられなかったのでこちらから参照してください ​http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm​ 水道料金一か月の表の一般用の部分です 計算式 (基本料金+従量料金)*1.05(1円未満の端数は切り捨て) 【プログラムの仕様】 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です Sub ex51() '問題5 Dim x As Integer, y As Integer, z 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("今月の水道使用量を立法メートル単位で入力してください。") Select Case x Case ((1)) '13mm 基本料金 = 860 Case ((2)) '20mm 基本料金 = 1170 Case ((3)) '25mm 基本料金 = 1460 Case ((4)) '30mm 基本料金 = 3435 Case ((5)) '40mm 基本料金 = 6865 Case ((6)) '50mm 基本料金 = 20720 Case ((7)) '75mm 基本料金 = 45623 Case ((8)) '100mm 基本料金 = 94568 Case ((9)) '150mm 基本料金 = 159094 Case ((10)) '200mm 基本料金 = 349434 Case ((11)) '250mm 基本料金 = 480135 Case ((12)) '300mm以上 基本料金 = 816145 End Select Select Case ((1)、(2)、(3)) If y = 1 < 5 Then z = 0 * y If y = 6 < 10 Then z = 22 * y If y = 11 < 20 Then z = 128 * y If y = 21 < 30 Then z = 163 * y If y = 31 < 50 Then z = 202 * y If y = 51 < 100 Then z = 213 * y If y = 101 < 200 Then z = 298 * y If y = 201 < 1000 Then z = 372 * y Else z = 404 * 1000 End If Select Case ((4)、(5)) If y = 1 < 100 Then z = 213 * y If y = 101 < 200 Then z = 298 * y If y = 201 < 1000 Then z = 372 * y Else z = 404 * y Select Case ((6)、(7)) If y = 1 < 1000 Then z = 372 * y Else z = 404 * y Select Case ((8)、(9)、(10)、(11)、(12)) z = 404 * y MsgBox ”水道料金=”int((x+z)*1.05) End Sub

  • IF関数の条件分岐について

    基本使用量が8以下の場合は1620円のみですが、 基本使用量が8以上の場合、超過分として、使用料に応じて計算が変わってくる条件分岐をIF関数で考えています。 基本使用量8~30まで→(今月使用料-8)×160円      31~50まで→(今月使用料-8)×220円      51~→(今月使用料-8)×330円 こういったものを、基本使用料金と、従量料金と別項目として 表示させたい場合、どのような関数を書けばよいか教えてください。 お願いします。       

  • 数学

    簡単な質問かもしれませんが、下の計算で同じ消費税を乗せるのに なぜ計算があわないか、また、規則性、商売上使用例があれば何かトリックてきなのでお教えください。 (例)基本料金1500円+従量料金350円でガス料金(基本料金+従量料金×使用量㎥) 使用量0.1だと 1500+(350×0.1)=1535 1535×1.05=1611.75 方や、基本料金(1500+75)+{(350+18)×0.1}=1611.8

  • EXCELのIF関数の条件分岐について

    基本使用量が8以下の場合は1620円のみですが、 基本使用量が8以上の場合、超過分として、使用料に応じて計算が変わってくる条件分岐をIF関数で考えています。 基本使用量8~30まで→(今月使用料-8)×160円      31~50まで→(今月使用料-8)×220円      51~→(今月使用料-8)×330円 こういったものを、基本使用料金と、従量料金と別項目として 表示させたい場合、どのような関数を書けばよいか教えてください。 お願いします。

  • LPガスの明細の指針とご使用量の違い

    たとえばある明細(検針票)に 「今回指針」97m3 「ご使用量」1m3 「ガス料金」2.300円 とあります。 「毎月のガス料金」=「基本料金」+「従量料金(毎月のご使用量×従量単価)」 という計算式ということですが、 従量料金が「ご使用量」1m3なのでしょうか? また、この検針票には「基本料金」という項目はありませんが、基本料金は「ご使用量」なのでしょうか? 指針とご使用量が、従量料金、またはご使用量のそれぞれどちらなのでしょうか?

  • 水道料金の見方について

    4月から一人暮らしをはじめ、水道料金の請求書が来ました 半月しか使っていないのになんと2500円!! 驚いて水道局のHPを見てみると計算方法が載っていたのですが、 いまいちよくわかりません・・・ 今23区に住んでいて、明細には使用量は4立方メートルとあります  HPの計算方法では1170+560に税 となるはずなのですが なぜ違うのでしょうか? 呼び径は20mmです http://www.waterworks.metro.tokyo.jp/life/r_keisan.htm  

  • ガス料金の計算法について。

    以前、アパートのガス料金が高いと言う趣旨で質問をさせていただいたときには貴重なご意見を頂き、ありがとうございました。料金設定が高いのはあきらめていたのですが、今度は計算方法について教えていただければと思い、質問をさせていただきます。  一ヶ月のガス使用量   基本料金   従量料金     使用量     0.0~8.0        1,890.00    960.00      20.0m3     8.1~15.0       1,890.00    590.00       15.1~9,999.9      1,890.00    490.00   という領収書があったとします。   この場合のガス料金は、20×490+1,890=11,690円 だと思うのですが、  実際の請求金額は  (8×960)+(7×590)+(5×490)+1,890=16,150円できております。    先日、知人宅の同じガス会社の領収書を見せていただくことができました。  知人は一戸建てなので、基本料金も従量料金も設定額がかなり安くなっております。  設定額は致し方ないと思っております。 ただ、計算法が私共とは違い、単純な方でされておりました。  同じ計算方法ならば、先ほどの 11,690円になります。 早速ガス会社へ問い合わせたところ、「計算方法は同じです。」の一点張り。その領収書がどこのお宅なのかをしきりに聞きだそうとします。知人に迷惑を掛けたくないため大雑把な表現でしか言えずにとりあえず電話を切りました。 そこでお聞きしたいのは、同じガス会社でも、家によって計算方法が違っても良いものなのか、ということです。  計算方法が違うだけで、毎月おおよそ3,000円~4,500円の差額が発生してしまいます。

  • 水道料金

    2ヶ月の水道料金、2立法メートル使用、東京水道です。水道基本料2340➕消費税234円➕下水道1120円➕消費税112円。水道、下水道ともに従量料は0円でした。一人暮らしです。東京水道料として一人暮らしでは高いですか?使い過ぎですか?

  • 水道代が高すぎます

    2DKの文京区のマンションに2人で10年住んでいました。 先日同じ文京区内のマンションに2人で引越しをしました。 今まで水道代が3000円程度の請求でしたが、 引越しをしてからだいぶ値段が上がり、今月は7074円になりました。 今月の内訳は 水道 基本料金:2340円 従量料金:1628円 下水道 基本料金:1120円 従量料金:1650円 ブラス消費税です。 引越しをしてから一度、水道局の方が「水道代が高すぎる」とのことで自宅に検査に来ましたが、原因はわかりませんでした。 その際、水漏れはないということは教えていただきました。 シャワーは節水のシャワーヘッドを使い、 洗濯はすすぎ1回にしています。(洗濯物が絡んだ際に水が出てくるみたいですが、うちは聞いたことがありません) 洗濯の頻度は週に4回程度です。 トイレはもともと水の流れが悪かったのを利用して、 使った際に少しだけ流すようにしています。 料理もしますが一般的な水の使用量だと思います。 いままでと変わらない生活をしているのでさっぱり原因が思いつきません。 一体何が原因となって水道代がこんなに高くなってしまったのでしょうか? どなたかご存知の方がいらっしゃいましたらご教授お願いいたしします。

専門家に質問してみよう