• 締切済み

「偶数・奇数の和」のフローチャート

「キーボードからnの入力をうながし、1からnまでの和を計算するプログラム」のフローチャートを以下のような形で 学校の情報の時間で作りました。 このようにして、「偶数の和」「奇数の和」のフローチャートを作りたいですがうまくできません。どなたか教えてください!。

みんなの回答

回答No.7

>入力するnによっては、かならずしも偶数と奇数を同じ回数可算させるとは限らない。 その処理はループを抜けた後に一回だけifをしてnの値によってマイナスして修正する。 そうすればループないで何回もifさせる必要ないしループの回数もiを1加算させるより 2加算させて計算した方が単純に半分のループだけで済む。 学校の勉強としたらループないでループさせて処理した考えは100点かもしれないけど 仕事ととしてソースを書くなら0点。 質問者が将来PGやSEになりたいなら今から効率的なソースを書くことを考えた方がいい。 よくこういうたとえの時に出されるのがソートのアルゴリズム。 学校の勉強ならバブルソートでも100点かもしれないけど仕事と考えた場合は バブルソートは0点。だって効率が悪いから

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.6

「ループを 2つ書く」という方針もありかな.

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.5

ループのiを2づつ可算させるという意見もあるがそれはやめたほうがいい。 入力するnによっては、かならずしも偶数と奇数を同じ回数可算させるとは限らない。 それを考慮したフローチャートにするとかえって分かりにくくなる。 この場合は、効率性よりも可読性(分かりやすさ)を優先すべき。

回答No.4

あっ文書しっかり読んでなかった。偶数の和ではなくて 偶数と奇数のそれぞれの和ね。 だったらやっぱりiは1から初めて2ずつ加算させて 奇数格納変数 = 奇数格納変数 + i 偶数格納変数 = 偶数格納変数 + i + 1 でやれば条件分岐すら必要ない。

回答No.3

 表現方法が不明で混ぜこぜになりますが勘弁して下さい。  はじめ  odd=0 even=0  n  ループ  i=1,2,,,,,,n if( i & 1 ){//1とAND演算して0でないなら奇数 odd += i;  }else{   //1とAND演算して0なら偶数 even += i; } ループ  "奇数和=",odd "偶数和=",even 終わり

回答No.2

効率で考えると#1の人のは効率が悪い。 iの値をループで1ではなくて2加算させればいいだけ。

  • ulti-star
  • ベストアンサー率41% (186/452)
回答No.1

判断(菱形)を使います 2で割った余りが0のとき偶数、そうでないとき奇数 BASICならi MOD 2=0 Cならi%2==0 菱形から二股に分かれ(菱形に近いところにYES、NOと書く) 処理をします YESが偶数、NOが奇数 ループ始  | <判断> |  | 処理処理 |  | ループ終 また、変数の定義、出力は1つずつ増えます

関連するQ&A

専門家に質問してみよう