dポイントプレゼントキャンペーン実施中!

「キーボードからnの入力をうながし、1からnまでの和を計算するプログラム」のフローチャートを以下のような形で
学校の情報の時間で作りました。

このようにして、「偶数の和」「奇数の和」のフローチャートを作りたいですがうまくできません。どなたか教えてください!。

「「偶数・奇数の和」のフローチャート」の質問画像

A 回答 (7件)

>入力するnによっては、かならずしも偶数と奇数を同じ回数可算させるとは限らない。


その処理はループを抜けた後に一回だけifをしてnの値によってマイナスして修正する。
そうすればループないで何回もifさせる必要ないしループの回数もiを1加算させるより
2加算させて計算した方が単純に半分のループだけで済む。

学校の勉強としたらループないでループさせて処理した考えは100点かもしれないけど
仕事ととしてソースを書くなら0点。
質問者が将来PGやSEになりたいなら今から効率的なソースを書くことを考えた方がいい。
よくこういうたとえの時に出されるのがソートのアルゴリズム。
学校の勉強ならバブルソートでも100点かもしれないけど仕事と考えた場合は
バブルソートは0点。だって効率が悪いから
    • good
    • 0

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

    • good
    • 0

ループのiを2づつ可算させるという意見もあるがそれはやめたほうがいい。



入力するnによっては、かならずしも偶数と奇数を同じ回数可算させるとは限らない。
それを考慮したフローチャートにするとかえって分かりにくくなる。

この場合は、効率性よりも可読性(分かりやすさ)を優先すべき。
    • good
    • 0

あっ文書しっかり読んでなかった。

偶数の和ではなくて
偶数と奇数のそれぞれの和ね。

だったらやっぱりiは1から初めて2ずつ加算させて
奇数格納変数 = 奇数格納変数 + i
偶数格納変数 = 偶数格納変数 + i + 1
でやれば条件分岐すら必要ない。
    • good
    • 1

 表現方法が不明で混ぜこぜになりますが勘弁して下さい。



 はじめ

 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
終わり
    • good
    • 0

効率で考えると#1の人のは効率が悪い。


iの値をループで1ではなくて2加算させればいいだけ。
    • good
    • 0

判断(菱形)を使います



2で割った余りが0のとき偶数、そうでないとき奇数

BASICならi MOD 2=0
Cならi%2==0

菱形から二股に分かれ(菱形に近いところにYES、NOと書く)
処理をします
YESが偶数、NOが奇数


ループ始
 |
<判断>
|  |
処理処理
|  |
ループ終


また、変数の定義、出力は1つずつ増えます
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!