- ベストアンサー
初心者です。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
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 の判定タイミングが違うから。
その他の回答 (6)
- wisize
- ベストアンサー率42% (37/87)
身も蓋もないことを言ってしまいますが、フローチャートなんぞは今時だれも使いません。 あなたが書き方に困るようなものは相手も読み方に困るので、 箇条書きで手順を説明したり、コメントを豊富にする方が賢明です。 学校の宿題だの会社の決まり事だのであれば口を挟めませんが、 個人的な問題でしたら「フローチャートを投げ捨てるべし」とお答えしておきます。
お礼
ご回答ありがとうございます! 参考にさせて頂きます!!
- okormazd
- ベストアンサー率50% (1224/2412)
a,b,cをどういう処理して判定に使うのか知らないけど,下記のような流れでしょう。 exitを使いたいので,stdlib.hをincludeする。 int main(void) { ・ ・ (処理1) while(b){ if(a) exit(0); ・ ・ } if(c){ (処理2) } else (処理3) return(0); }
お礼
ご回答ありがとうございます! 参考にさせて頂きます!!
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
No. 3 訂正です。 例3)と、例4)は間違っています。 失礼しました。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
例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; }
お礼
ご回答ありがとうございます! 参考にさせて頂きます!!
- titokani
- ベストアンサー率19% (341/1726)
別に複合はしていないですね。 gotoを使わずに書くと、こんな感じでしょうか 処理1; while( a == 0 ){ if( b == 0 ){ if( c == 0 ){ 処理3; }else{ 処理2; } break; } }
お礼
ご回答ありがとうございます! 参考にさせて頂きます!!
考え方としては、IF文とGOTO文を使ったものに置き換えたものをフローチャートとして書けばいいでしょう。 質問とは違いますが、フローチャートよりもPADの方がいいと思います。
お礼
ご回答ありがとうございます! 参考にさせて頂きます!!
お礼
ご回答ありがとうございます! 参考にさせて頂きます!!