ページ 11

小さい順に

Posted: 2010年7月10日(土) 09:34
by 初心者
#include<stdio.h>

int main()
{
int num;
printf("数値を入力してください。");
scanf("%d",&num);

while(num>0)
{
if(num%2 ==0)
printf("\n%d",num);

num=num-1;
}

return 0;
}
前回、これに例えば、100を入力すると大きい順に100,98,・・・2,というプログラムができたのですが、今回は小さい順に表示するプログラムを作りたいです。変数を二つ使うんですが、自分の作ったプログラムだとエラーが出ます。

Re:小さい順に

Posted: 2010年7月10日(土) 09:37
by 初心者
#include<stdio.h>

int main()
{
int num,i;

i = 2;

printf("数値を入力してください:");
scanf("%d",&num);

while(i <= num; i+=2)
{
if(num%2 ==0)
printf("%d",num);

num=num+1;
}

return 0;
}
いろんなヒントをもとに作ってるんですが、全部エラーが出たり、永遠に数が増えてったりします。
直すべきところを教えてください。

Re:小さい順に

Posted: 2010年7月10日(土) 12:35
by 胡椒
まず
while(i <= num; i+=2)
という使い方は出来ないと思います。この場合は
while(i <= num){
i+=2;
}
じゃないですか?

また、
num=num+1;
も、どのような意図があるのでしょう?

Re:小さい順に

Posted: 2010年7月10日(土) 12:52
by へろりくしょん
とりあえず、コードを意識しながら全部日本語で書いてみるといいのではないかと。


main()
{
num に適当な数字を入力;

ループ(num が0になるまで減らしながら繰り返す){
もし(num が偶数なら) 表示
}
}

後はコードを埋めていくだけです。
#include <stdio.h>    

int main(void)
{
    int num;

    scanf("%d", &num);

    for(num = num - num % 2; num >= 0; num -= 2) printf("%d, ", num);

    return 0;
}

Re:小さい順に

Posted: 2010年7月10日(土) 12:59
by motuna
はじめまして。

このプログラムは2,4,6…numまでのプログラムでいいですよね?

直すべきところはまず

while(i <= num; i+=2) ←ココ


forを使ったほうが楽でしょう

whileの場合書き方が間違っているようです。この書き方ですとエラーがでます。
エラーを出さないためには;を,に変えればいいです。

また上記の操作をすると無限ループとなります。
これはループを抜ける条件がi+2のほうになっているためだと思います。
もう一度コンマ演算子について調べてみることをおすすめします。

あとは大きい順だと2で終わりですが小さい順だとnumで終わりととなります。
終わる位置を

num=num+1;

で変えてしまっています。
と、するとprintfで表示してるnumも変える必要がありますよね?

以上のことをすればあと少し直せば出来るとこまで行けるはずです。
頑張ってください

Re:小さい順に

Posted: 2010年7月10日(土) 13:54
by MAY
#include <stdio.h>

int main(void) //←関係ありませんがvoidを入れておきましょう
{
int num,i;

i = 2;

printf("数値を入力してください:");
scanf("%d",&num);

while(i <= num )
{
if(num%2 ==0)
printf("%d\n",i); //numではなくiを表示しないと意味がないでしょう

i = i + 2; //iを増やしていかないと意味がないでしょう
}

return 0;
}

Re:小さい順に

Posted: 2010年7月10日(土) 22:24
by 初心者
おぉ!!できました^^
一つずつ上から条件をクリアしていかないと、ちゃんとしたプログラムは書けないんですね。
何回もヒントを読んでうちにどういったものを当てはめればいいか、わかってきました。
胡椒さん、へろりさん、motunaさん、MAYさん ありがとうございます^^