• ベストアンサー

フローチャートの解き方?について

学校で人工言語学という授業を取っているのですが、フローチャートの回の授業を休んでしまい、三日後にテストなのに全く理解できません。 ネットで色々と調べたところ、フローチャートとはプログラムを図で表したものという風に理解しているのですが、授業で渡されたプリントの図を見ても何を問いたいのかが分かりません。 以下に図を記述します。 開始 ↓ 10⇒B(処理1) ↓ 0⇒A(処理2) ↓ A+B⇒A(処理3) ↓ B-1⇒B(処理4) ↓ B=0(判断) (YESなら終了、NOなら処理3へ戻る) どうやらこの図を参考にしてAとBの下に数字を並べていき答えを出していくらしいのですが、何を意味する図なのかすら分かりません。 すごく初歩的なことなのでお恥ずかしいですが、どのように解いていくのかを初心者にも分かるように説明していただけないでしょうか。 宜しくお願いします。

  • poisn
  • お礼率90% (40/44)

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

  • ベストアンサー
回答No.3

はじめまして。 どのように解いていくか、というのは処理の流れが分かれば大丈夫なのでしょうか? とりあえずpoisnさんの載せている図を進めていきたいと思います。 <1回目> 処理1:Bに10を代入 処理2:Aに0を代入 処理3:A+BをAに代入、すなわちA=10 処理4:B-1をBに代入、すなわちB=9 判断:B=0なら終了、B≠0なら処理3へ    B=9ですから処理3に戻りますね。 <2回目> 処理3:A+B=10+9をAに代入。A=19です 処理4:B-1=9-1をBに代入。B=8ですね 判断:やはりB≠0なので処理3に戻ります。 <3回目>  ・  ・  ・ とどんどん進めていきますと、Bは10から1ずつ減っていってますので最後には0になりますね。その時に初めて判断のパートにおいてB=0が成立し、プログラムが終了となります。そして終了時点でのAの値は、10+9+8+…+1=55です。恐らくこの図を解く、というのは終了時のAの値を求める、というものではないでしょうか。 書いている内容がわからなければまた聞いてください。どうかpoisnさんのご参考になればと思います。それでは。

poisn
質問者

お礼

すごく丁寧で分かりやすい解説ありがとうございます。 完全に理解することができました。 おっしゃる通り、おそらくAを求めるということだと思います。 単位が危なくてかなりあせっていたので、すごく助かりました。ありがとうございました。

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> 10⇒B Bという変数に10という数を代入する。 って記述だと思います。 変数、代入って、授業でやりませんでしたか?

poisn
質問者

お礼

ご回答ありがとうございます。 難しい問題だと勝手に思い込んでいたのですが、すごい単純な問題だったんですね。 お騒がせしてすみませんでした。

  • quatro100
  • ベストアンサー率31% (13/41)
回答No.1

図ではこんな感じです || 10→B ||   ↓ || 0→A ||   ↓ || A+B→A ||←┐   ↓    │ || B-1→B || │   ↓    │ || if B=0 ||─┘no   ↓yes   end つまりifの時点でAとBの間に以下の関係があります A B 10 9 19 8 27 7 34 6 40 5 45 4 49 3 52 2 54 1 55 0 これって1~10までの合計値ですよね。 当たり前なんですけど、楽しいですよね。 授業じゃそうでもないか。

poisn
質問者

お礼

さっそくのご回答ありがとうございます。 AとBの値を最後まで書いてもらい、どうゆう風に解くのか理解できました。 すごく単純な問題だったんですね。。 ありがとうございました。

関連するQ&A

  • みなさまのお力をお貸しください。フローチャート質問

    a^2=b^2+c^2の三平方の定理のフローチャートです 1<=a,b,c<=100の範囲の自然数で 定理をみたす自然数をもとめる問題なのですが 私が考えた下記のフローチャートを見てもらえませんか?  開始 (1)a=0 (2)b=0 (3)c=0 (4)a=sqrt(pow(b,2)+pow(c,2)) (5)b=sqrt(pow(a,2)-pow(c,2)); (6)b=sqrt(pow(a,2)-pow(b,2)); (7)処理1<=a<=100NOならb=b+1,c=c+1で(4)へ YES (8)処理1<=b<=100NOならa=a+1で(5)へ YES (9)処理1<=c<=100NOならa=a+1で(6)へ YES (a,b,c)表示 終了 実行したら(2,1,1)になります 範囲のなかで上いがいで定理が成り立つabcを出したいのですが どこが違うのかどうしたら良いのかアドバイスをください 一様c言語を書いてみました できたら上の形でお願いします a=0; b=0; c=0; Label01: a=sqrt(pow(b,2)+pow(c,2)); Label02: b=sqrt(pow(a,2)-pow(c,2)); Label03: c=sqrt(pow(a,2)-pow(b,2)); if (a>=1 && a<=100) { /* YES 処理 */ printf("%d\n",a); if (b>=1 && b<=100) { /* YES 処理 */ printf("%d\n",b); if (c>=1 && c<=100) { /* YES 処理 */ printf("%d,%d,%d\n",a,b,c); } else { /* NO 処理 */ a=a+1; printf("%d\n",c); goto Label03; } } else { /* NO 処理 */ a=a+1; printf("%d\n",b); goto Label02; } } else { /* NO 処理 */ b=b+1; c=c+1; printf("%d\n",a); goto Label01; } printf("a^2=b^2+c^2\n"); return 0;

  • フローチャートを教えてください

    2.配列A(i),i=0,1,2…のm個の要素の平均を計算するアルゴ リズムを流れ図(flowchart)で表現したい。(a),(b)に入るべき 条件及び処理を書け。なおmは1以上で,mの要素はいずれも正数で ある。またA(m+1)に0が格納されているものとする。      開始      |     0→i      |     0→sum ――→ | |   ( a )―――――――――― |    |no          | | A(i)+sum→sum      sum/i→AVE |   ( b )          | |    |          AVEを表示 ――――             |                 終了  (注)四角やひし形は省略させていただきます。 これで (b)は i+1=i とわかったのですが、 (a)がどうし てもわかりません  本当に困っています どうか心優しい方教えてください。お願い します。

  • 例外処理のフローチャートの記述方法

    例外処理のフローチャートを記述したいのですが、良い記述方法はないでしょうか? try、catch、throwの記述方法等教えていただければ幸いです。 #JISで決められている図でtry、catch、throwに該当する図はないと思います。 #わかりやすければ、独自の図などでも構いませんので、アドバイスお願いします。

  • さっぱり分かりません。フローチャート

    情報の授業でフローチャートを書くのですが、さっぱり分かりません。せいぜい「はじめ」、「おわり」、条件はひし形で囲う、処理は四角で囲む。Y、Nで分かれる、くらいです。ですので、下のような応用問題になったらさっぱりです。 a停留所からb停留所の運賃・・・150円 回数券11枚・・・1500円 1ケ月の定期・・・3400円 a停留所からb停留所までバス通学をしている。3月は春休みのため、部活のあるときだけ登校する。乗車券を使うより、回数券を使ったほうが安くなる3月の登校日は何日か。ただし、往復でバスを利用しているとする。*回数券は2冊以上購入してもよい。 ■算数で考えると分かりますが、それをどうフローチャートで描くのですか? こんな初心者に分かるような適切ば参考書があれば教えて下さい。 明日は、日曜日なのでなんとか明日中に仕上げたいです。

  • フローチャートの書き方

    TCP通信のソケットシステムコールでselectを使用して いるのですが、データ受信待ち状態で 【t秒経過してデータを受信しなかったらA処理をする】 【データ受信したら、B処理をする】 の2つの処理があるのですが、フローチャートをどのように書けばいいのか分かりません。 どなたかご教授願いますm(__)m

  • アンドロイドアプリの動きのフローチャート

    アンドロイドアプリでボタンを押して音が出るようにしました。 フローチャートで表す場合、「初期画面の表示」は長方形、「ボタンを押したか」はひし形でYES、NOで分岐し、「音が出る」は平行四辺形(データの出力)でよいでしょうか。それとも、長方形の「処理」になるのでしょうか。

  • C++のフローチャート

    次の条件判断文を使うケースをフローチャートにせよ 変数aの値がbより小さい場合には、『aはbより小さいです』と表示させ、大きい場合には"a=a+b"を計算させる 文字変数mの中身が'a'ならば、『aが格納されています』と表示させて、'a'でないならば『'a'でない文字が格納されています』と表示させたあと、変数bとcを使った『b=b+c』を計算する。 変数aが、変数bより小さい場合には、『aはbより小さいです』と表示し、変数bより大きい場合には、『aはbより大きいです』と表示し、変数bと等しい場合には、『aとbは等しいです』と表示する フローチャートなので、図がほしいのですが、どうすればいいんですか?1つでもいいから誰か助けてください、、、

  • フローチャート (ファイル併合処理)について

    今、フローチャートについて勉強していますが、 ファイルの併合処理について、分からないところがあります。 ~問~ ファイルAとファイルBは昇順に並んでいます。この2つのファイルを併合して出力ファイルCを作成するフローチャートを作成。(キーは00~10) もしファイルAとファイルBに重複したキーのレコードがある場合は ファイルAのレコードのみをファイルCに出力し、エラー表示を行う。 大まかな流れは 開始→ファイルAオープン→ファイルBオープン→出力ファイルCオープン→併合処理の本処理→ファイルAクローズ→ファイルBクローズ→出力ファイルCクローズ→終了 だと思うのです。 問題は、併合処理はどういって組むか分からない部分と 出力ファイルCにどうやってA,Bのファイルのキーの数字を入れればよいか(書けばいいか)分かりません。 フローチャートの記号は一折把握していますが、ファイル関連はネットでも手元の書物でもあまり書いていませんでした。 どうかよろしくお願い致します。

  • 西欧言語のYes/No

    英語・スペイン語、あるいはそれに近い言語でのYes/Noのことをお伺いします。 こんな会話があったとします。 A:あなたの国にはこのような習慣はありますか? B:いいえ、ありません。 A:えっ それは本当ですか? B:( Yes/No ) 最後のBさんの返事に日本語なら「はい」と答えますよね。これはAさんの「えっ それは本当ですか?」という問いに対して「はい(それは本当です)」と答えてると思うんです。 西欧の言語といってもたくさんありますから英語・スペイン語、あるいはそれに近い言語に限定しますが、その言語ではBさんの最後のセリフはYesですか、それともNoでしょうか。 Aさんの最初のセリフに対して No と言うような気がしますが、Aさんの2番目のセリフがはさまっているので確証が持てません。 更に A:あなたの国にはこのような習慣はありますか? B:いいえ、ありません。 A:えっ それは本当ですか? B:( Yes/No ) A:ああ、そうなんだぁ。 B:( Yes/No )[ああ、そうなんだぁ に対して ええ、そうなんです と言いたい] と会話が続く場合も教えていただけると有難いです。 よろしくお願いします。

  • フローチャート以外の設計方法

    大学で初めてC言語プログラミングを習い、 授業が終わってからもC言語の書籍をいくつか読みました。 その力試しとしてトランプゲームのブラックジャックの プログラムを作ってみようと思いました。 その過程でフローチャートを用いて設計してみたのですが 条件分岐がぐちゃぐちゃだったり、gotoを使わなければならなかったり とてもまともなコードが書けるような代物ではありませんでした。 確かに読んだ本の中で 「フローチャートは設計するために使ってはいけない」 という内容がありました。 ですがそれらの本ではフローチャートはいけないというだけで 具体的にどのような設計方法を用いればよいか読み取れませんでした。 そこでみなさんに質問なのですが、 一通りプログラミング言語の文法を理解したプログラミング初心者が こんなプログラムを作りたいと思ってから (たとえば簡単なトランプゲームなど) 実際にソースコードを書くまでには どのような方法でどのような手順を踏んだらよいのでしょうか? 教えてください。よろしくお願いします。

専門家に質問してみよう