• ベストアンサー

初心者です。

初心者です。 プログラミング(C言語)を始めた者です。 for、while文を理解した段階ですが、添付画像の様なfor、while文が複合したフローチャートの場合、どの様にソースを書けばわかりません。 教えて頂けますでしょうか? よろしくお願い致します。

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

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

No.3 たびたび失礼します。 そういえば、exit() を使う手がありましたね。 直接 return でもいいし。 そうすると、「間違いです」と言った、例3)、例4)も書き直し可能です。 あと、例2)も間違いでした。 -------------------------------------------- 例2) int main() { 処理1(); while(1) { if (a != 0) break; if (b != 0) continue; // ここが間違っていた if (c == 0) { 処理3(); break; } else { 処理2(); break; } } return 0; } -------------------------------------------- 例3)分離する int main() { 処理1(); while(1) { if (a != 0) return 0; if (b == 0) break; } if (c == 0) { 処理3(); } else { 処理2(); } return 0; } -------------------------------------------- 例4)do - while 構文 さらに、意味的にはこちらの方が自然かもしれません。 int main() { 処理1(); do { if (a != 0) return 0; } while(b != 0); if (c == 0) { 処理3(); } else { 処理2(); } return 0; } -------------------------------------------- 例3)と例4)で while の中身が違うのは、while の判定タイミングが違うから。

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

その他の回答 (6)

  • wisize
  • ベストアンサー率42% (37/87)
回答No.7

身も蓋もないことを言ってしまいますが、フローチャートなんぞは今時だれも使いません。 あなたが書き方に困るようなものは相手も読み方に困るので、 箇条書きで手順を説明したり、コメントを豊富にする方が賢明です。 学校の宿題だの会社の決まり事だのであれば口を挟めませんが、 個人的な問題でしたら「フローチャートを投げ捨てるべし」とお答えしておきます。

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

a,b,cをどういう処理して判定に使うのか知らないけど,下記のような流れでしょう。 exitを使いたいので,stdlib.hをincludeする。 int main(void) { ・ ・ (処理1) while(b){ if(a) exit(0); ・ ・ } if(c){ (処理2) } else (処理3) return(0); }

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

回答No.4

No. 3 訂正です。 例3)と、例4)は間違っています。 失礼しました。

回答No.3

例1)フローチャートに忠実 int main() { 処理1(); loop: if (a != 0) goto exit; if (b != 0) goto loop; if (c == 0) { 処理3(); } else { 処理2(); } exit: return 0; } 例2) while とか使ってみる。 Cのループの中では、break と continue が特徴的な制御に使われます。 これを使うと、以下のように書けます。 ただ、break や continue は、「かくれた goto」なので、これも、使いすぎはよくありません。 int main() { 処理1(); while(1) { if (a != 0) break; if (b == 1) continue; if (c == 0) { 処理3(); break; } else { 処理2(); break; } } return 0; } 例3)分離する 実は、例2)のような長い while ループは不要です。 ループする可能性があるのは、b == 0 の判定までなのですが、 案外、必要以上に長いループを書いてしまうことがあります。 int main() { 処理1(); while(1) { if (a != 0) break; if (b == 1) continue; } if (c == 0) { 処理3(); } else { 処理2(); } return 0; } 例4)do - while 構文 さらに、意味的にはこちらの方が自然かもしれません。 int main() { 処理1(); do { if (a != 0) break; } while(b == 0); if (c == 0) { 処理3(); } else { 処理2(); } return 0; }

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

別に複合はしていないですね。 gotoを使わずに書くと、こんな感じでしょうか 処理1; while( a == 0 ){  if( b == 0 ){   if( c == 0 ){    処理3;   }else{    処理2;   }   break;  } }

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

noname#140045
noname#140045
回答No.1

考え方としては、IF文とGOTO文を使ったものに置き換えたものをフローチャートとして書けばいいでしょう。 質問とは違いますが、フローチャートよりもPADの方がいいと思います。

参考URL:
http://www.geocities.jp/dyamagu2/perl/perl3-4.html
ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

関連するQ&A

専門家に質問してみよう