10代と話して驚いたこと

C#の問題です。
1~Xまでの数値を足していく問題です。
例はXの数字が「5」だとすると1+2+3+4+5= となるものです。
Xの数字はどの数字をいれてもいいものとします。
プログラミングは完成しました。
ですがその後の問題ができません。
Console.Write("1~Xまで足したい数値を入力してください");
int X = Int32.Parse(Console.ReadLine());


int a =0;
for (int i = 0; i < X; i++)
{
a += i;
}

Plus(X,a );
Console.ReadLine();
}
static void Plus (int c, int b)
{
Console.WriteLine("1~Xまでの合計="+((int)(c+ b)).ToString());

このようにプログラミングができたのですが、先生からの問題で
「int a =0」という初期化せずにこのプログラミングを完成させよというものでした。
printfなどを使わずに、ループはそのまま使い、簡単に作成できる方いらっしゃいますでしょうか?
よろしくお願いいたします!><

A 回答 (4件)

う~ん、先生の意図が難解ですが、


とりあえず、先生はスタティックな領域の概念を知って欲しいんだろうと勝手に解釈して
以下の様にしてみました。確かに明示的な初期化はしていません。

static int a;

static void Main(string[] args)
{
Console.Write("1~Xまで足したい数値を入力してください");
int X = Int32.Parse(Console.ReadLine());

for (int i = 1; i <= X; i++) a += i;

Console.WriteLine("1~Xまでの合計=" + a.ToString());

Console.ReadLine();
}
    • good
    • 0

aはクリアして使うのがまっとう。


X>0なら、ループの中でi=0の時a=0、又はi=1の時a=1
でも良いが、初期化のタイミングをわかりにくく
ズラすだけなので無意味でしょう。

それよりも題意を無視して 0~X-1を足しこんで、
別途xを最後に足して表示という奇妙な手順を見直した方が良い。
    • good
    • 0

X が正のときしか考えないのであれば


int a = 1;
と初期化してもいいな.
    • good
    • 0

「ループをそのまま使い」ということなら、a のような変数は初期化して使うのが正統な方法です。




ループを使わないのであれば、次のような方法があります。

○1〜nまでの整数の和、って数学の公式があるので、それを使う。
○再帰呼び出し関数で表現する。
    • good
    • 0

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


おすすめ情報