- ベストアンサー
さっぱり分かりません。フローチャート
情報の授業でフローチャートを書くのですが、さっぱり分かりません。せいぜい「はじめ」、「おわり」、条件はひし形で囲う、処理は四角で囲む。Y、Nで分かれる、くらいです。ですので、下のような応用問題になったらさっぱりです。 a停留所からb停留所の運賃・・・150円 回数券11枚・・・1500円 1ケ月の定期・・・3400円 a停留所からb停留所までバス通学をしている。3月は春休みのため、部活のあるときだけ登校する。乗車券を使うより、回数券を使ったほうが安くなる3月の登校日は何日か。ただし、往復でバスを利用しているとする。*回数券は2冊以上購入してもよい。 ■算数で考えると分かりますが、それをどうフローチャートで描くのですか? こんな初心者に分かるような適切ば参考書があれば教えて下さい。 明日は、日曜日なのでなんとか明日中に仕上げたいです。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ。 [開始] [w運賃=0] [w回数券代 = 0] [w回数券残 = 0] [w日数 = 0] (1)’ [w日数 = w日数 + 1] [w運賃 = w運賃 + 150] <<w回数券残 = 0>>-------------yes ・・・・・・・・・[w回数券残 = w回数券残 + 11] ・・・・・・・・・[w回数券代 = w回数券代 + 1500] [w回数券残 = w回数券残 - 1] [w運賃 = w運賃 + 150] <<w回数券残 = 0>>-------------yes ・・・・・・・・・[w回数券残 = w回数券残 + 11] ・・・・・・・・・[w回数券代 = w回数券代 + 1500] [w回数券残 = w回数券残 - 1] <<w運賃 > 3400>>-------------yes [定期券購入したほうがいい] <<w日数 > 31>>---------------yes [該当無し]←(この判定に引っかかったら正直エラーです(笑)) <<w回数券代 > w運賃>>---------yes (1)'へ 処理終了 とこんな感じになるんでしょうか? 回数券はa停留所とb停留所のどちらでも買うことが出来ると想定して 無くなった時点で購入という処理にしています。 同じような処理が2回書いてあるのは行きと帰りの処理です。 行き返りをまとめて形で判断したいのであれば、150を300に変えて、回数券の 残数を2枚減らすようにしてやればいいと思います。 ちなみに[]は処理,<<>>は判定です。 やり方はいろいろあると思うので、考えて見て下さい。 それより間違ってたらすいません。
その他の回答 (7)
間違ってました。 n = (3399 / 1500 + 3399 % 1500 / 150) / 2; ↓ n = (3399 / 1500 * 11 + 3399 % 1500 / 150) / 2;
お礼
再度にわたって、ありがとうございます。 この場をかりて、補足を含めて延べ8人の方に助けていただき、感謝しています。 みなさんにポイントを発行したいのですが、システム上無理ですので、お馬鹿な私でも理解しやすかったものに、ポイントを発行させていただきます。
今更遅いと思いますが、 この問題の難しいところは、「算数レベルで解ける」というところでしょう。 ------------------- 全て整数で計算する事を前提にするので、安くなるという条件を 3399 円以内とします。 3399÷1500=2 …購入可能な回数券の枚数 3399-1500×2=399 …残りの資金 399÷150=2 …回数券を補う運賃の支払い可能回数 (11×2+2)÷2=12 …何日ぶんに相当するか ------------------- これを、例えば C や JAVA で書けば、n = (3399 / 1500 + 3399 % 1500 / 150) / 2; の1行で終わってしまいますから、これに対してフローを作るというのは、 もはや、掛け算と割り算を足し算と引き算を使って解けというのと同じ事です。 無理矢理フローチャートを作ることはできますが、いい応用問題とは言えません。 一般的に、数式で表現可能なことに対してフローを作成したりすることはありませんので、この設問に対してうまく回答できなくても、気にする事はないですよ。
お礼
今さら遅くないですよ。授業で、あまりのみんなの不出来に提出が延びたので、助かってます。 >一般的に、数式で表現可能なことに対してフローを作成したりすることは>ありませんので、この設問に対してうまく回答できなくても、気にする事>はないですよ 本当ですか?慰めとも励ましとも・・・。ありがとうございます。
- Singollo
- ベストアンサー率28% (834/2935)
> インクリメントの意味さえわかりません 変数の値を(多くの場合1)増やすことです (はじめ) | [登校日数←0] | |←(A) [登校日数←登校日数+1] 注:ここがインクリメントです || <登校日数*2>=11>→(A) | [登校日数を表示] | (おわり}
お礼
>[登校日数←登校日数+1] 注:ここがインクリメントです 授業で、n=n+1 というのを習いました。それかな?
- yu-mizu123
- ベストアンサー率37% (67/180)
すいません。何についてのフローチャートを書くのかがよく解らないのではずれているかもしれません。 >乗車券を使うより、回数券を使ったほうが・・・ これは定期券と回数券どちらの方が安くつくか分岐点の日数を求めるのでは?。 例 回数券2冊→3000円→登校日数11日 登校日数11日の金額3000円(回数券2冊分) 登校日数12日の金額3300円(回数券2冊+往復乗車券1日分) 登校日数13日の金額3600円(回数券2冊+往復乗車券2日分) 1ケ月分の定期・・・3400円 と比べると登校日が12日以内の時には回数券の方が徳です。13日以上の場合は定期券。 このフローチャートは比較して判断するというものになると思います。 はずしていたらすみません。
お礼
おっしゃっるとおり、日数の分岐点を捜すのです。 >登校日数11日の金額3000円(回数券2冊分) >登校日数12日の金額3300円(回数券2冊+往復乗車券1日分) >登校日数13日の金額3600円(回数券2冊+往復乗車券2日分) >1ケ月分の定期・・・3400円 と比べると登校日が12日以内の時には>回数券の方が徳です。13日以上の場合は定期券。 これは算数で考えられるので分かります。これを流れ図で示すのが・・・。
- coco1
- ベストアンサー率25% (323/1260)
フローチャートを書く場合は、まず大まかな流れを一つのチャートにし、細々した手続きはサブルーチンにして別のチャートにすると、途中でこんがらなくて良いでしょう。 その後、まとめられそうな処理はまとめる等の仕上げをすればいいと思います。 ご質問の場合の回答例(ホンの一例ですから、これが正解とは限りません。)だと (はじめ) | 0→日数 | 《ループはじめ》 | [日数+1→日数] | [300×日数→切符代] | [繰り上がり(2×日数/11)→冊数] | [1500×冊数→回数券代] | 《(回数券代<切符代)ならループ脱出》 | [日数を表示] | (おわり) ここで 繰り上がり()は、小数を整数に繰り上げた値を返す関数もしくはサブルーチン 例:繰り上がり(1.09)=2 ...って具合でしょうか。要は、難しく考えすぎないことです。
- imogasi
- ベストアンサー率27% (4737/17069)
>適切な参考書があれば教えて下さい。 ご質問のような、特殊具体的な問題のヒントになる本は そもそも売っているはずがありません。自分で考えなければなりません。 ○Amzazonのネット販売本の検索を「フローチャート」でしてみると100冊も出てきます。しかし フローチャートにも私見では3種あります。 (1)手順を前後関係やするべきことを文章化したもの を四角計や4辺形を使って前後並べたもの。 初等のコンピュタープログラムのイントロ部にでて くるお遊び的な説明。 (2)業務や仕事を手順通りに図解したもの。 理解を助ける手法・説明方法として採用されてい る。 (3)コンピュタープログラムを書くことを前提に、書い たフローチャート(本家・本元?のもの) 本件は(1)に当たり、(3)の説明に入る前の例示として、日常活動の動作などを借りて説明しようとしているのに似ている。 上記100冊はほとんど(2)に属するもので、(3)の 説明書は非常に少なく、2-3冊しか大型書店でも見当たらないでしょう。その2-3冊は、コンピュター・プログラムのアルゴリズムに沿ったものがほとんどです。だから買おうとしてもご希望の本はありません。パソコン時代になり、フローチャートなしでコーディングやオブジェクトを作るので衰退しつつあるように見える。 ○決めること・計算・場合による枝分かれを細かく、紙片に書いて、順序を並べ、じっくり考えて、並べ直しとか、処理ステップを追加していって、鍛えるしかないでしょう。
お礼
自分でも、本についてはネットで調べました。しかしたくさんありすぎて、何がなんだか???。なるほど、(1,2,3)のように大雑把に分かれているのですね。 ワード、エクセルならmouse検定を受けてみたくらい、スキルはあるのですが、プログラミングとなると???文系の人間には辛いです。 結論はやはり >○決めること・計算・場合による枝分かれを細かく、紙片に書いて、順序を並べ、じっくり考えて、並べ直しとか、処理ステップを追加していって、鍛えるしかないでしょう。 明日は図書館にこもります。ありがとうございました。
- Singollo
- ベストアンサー率28% (834/2935)
その設問だと定期券の価格は意味が無いと思いますが、部活の日数を0からインクリメントしていって、必要な乗車券の枚数が11未満かどうかを判定すればいいのでは?
補足
あの~,インクリメントの意味さえわかりません。(><;)
お礼
さっぱりの私にも、「これはこういうことかな」と思うくらいの丁寧な解説ありがとうございました。感謝です。 これまでのみなさんのヒントを元に日曜日にらめっこしてなんとか形にはなりました。