以前ヒントを教えてもらったプログラムですが・・
以前ヒントを教えてもらったプログラムですが・・
整数を入力して、小さい順に偶数、2,4,6・・・numと表示するプログラムを作ったのですが、
奇数を入力したときにこのプログラムだと表示しないことがわかりました。
よろしければいじるべき点を教えてください。
#include <stdio.h>
int main(void)
{
int num,i;
i = 2;
printf("数値を入力してください:");
scanf("%d",&num);
while(i <= num )
{
if(num%2 ==0)
printf("%d\n",i);
i = i + 2;
}
return 0;
}
奇数を入力したときにこのプログラムだと表示しないことがわかりました。
よろしければいじるべき点を教えてください。
#include <stdio.h>
int main(void)
{
int num,i;
i = 2;
printf("数値を入力してください:");
scanf("%d",&num);
while(i <= num )
{
if(num%2 ==0)
printf("%d\n",i);
i = i + 2;
}
return 0;
}
Re:以前ヒントを教えてもらったプログラムですが・・
>i = i + 2;
これは「i++」で十分です。
それと称号がすごいことなってますね…初心者って名前ダメなんじゃ…?
前来たことあるかもわからないし…名前は決めたほうがいいですよ。
==========
これ書いた意味ないですね。
勘違いしてしまいました。
これならもとのまま
if文削ればいいのに・・・

これは「i++」で十分です。
それと称号がすごいことなってますね…初心者って名前ダメなんじゃ…?
前来たことあるかもわからないし…名前は決めたほうがいいですよ。
==========
これ書いた意味ないですね。
勘違いしてしまいました。
これならもとのまま
if文削ればいいのに・・・

Re:以前ヒントを教えてもらったプログラムですが・・
まだ解決されていないようなので
質問者さんが来てくれると信じて回答
とりあえずこのプログラムって偶数を表示するプログラムですよね?
それで奇数を入力したら表示がされないのでいじるべき点を教えてほしいと
単にいじるべき点を教えてくださいと言われましても
いじるべき点はあるといえばたくさんあるしないといえばありません
理由としては質問者さんがこのコードを書き換えて
どういう結果にしたいのかが私達にはわからないから
こうすればこうなるよ
とか
ここはこう書きかえると見やすいね
とかはいくらでもありますが
それが質問者さんのしたいことではないならば何の意味も持ちません
例えば奇数を入力したとしても2以上で入力した数値よりも小さい偶数を全部表示したいとか
奇数を入力したら偶数を入力してくださいって打ち直させるのかなどなど
とりあえずやりたいことを教えてください
そうなるようにこちらとしては全力でサポートする姿勢です
質問者さんが来てくれると信じて回答
とりあえずこのプログラムって偶数を表示するプログラムですよね?
それで奇数を入力したら表示がされないのでいじるべき点を教えてほしいと
単にいじるべき点を教えてくださいと言われましても
いじるべき点はあるといえばたくさんあるしないといえばありません
理由としては質問者さんがこのコードを書き換えて
どういう結果にしたいのかが私達にはわからないから
こうすればこうなるよ
とか
ここはこう書きかえると見やすいね
とかはいくらでもありますが
それが質問者さんのしたいことではないならば何の意味も持ちません
例えば奇数を入力したとしても2以上で入力した数値よりも小さい偶数を全部表示したいとか
奇数を入力したら偶数を入力してくださいって打ち直させるのかなどなど
とりあえずやりたいことを教えてください
そうなるようにこちらとしては全力でサポートする姿勢です
Re:以前ヒントを教えてもらったプログラムですが・・
そうですね、だいちゃんさんの言う、
奇数を入力したとしても2以上で入力した数値よりも小さい偶数を全部表示したい
まさにこれですね^^
たとえば
45と入力して、2,4、6・・・44
46と入力して、2,4,6・・・46
と奇数ででも偶数ででもnumまでの偶数を表示してくれるプログラムです。
ただしforを使わずwhileとifを使わないといけません。
とりあえず今は、ぽこさんとパコネコさんのifいじりをちょっと考えてみます。
奇数を入力したとしても2以上で入力した数値よりも小さい偶数を全部表示したい
まさにこれですね^^
たとえば
45と入力して、2,4、6・・・44
46と入力して、2,4,6・・・46
と奇数ででも偶数ででもnumまでの偶数を表示してくれるプログラムです。
ただしforを使わずwhileとifを使わないといけません。
とりあえず今は、ぽこさんとパコネコさんのifいじりをちょっと考えてみます。

Re:以前ヒントを教えてもらったプログラムですが・・
if(num%2 ==0 || num-1%2==0)
printf("%d\n",i);
これの場合、もしnumが3だったとして、num-1%2==0が2になるから、
2と表示されると思ったんですけど、駄目でした;
printf("%d\n",i);
これの場合、もしnumが3だったとして、num-1%2==0が2になるから、
2と表示されると思ったんですけど、駄目でした;
Re:以前ヒントを教えてもらったプログラムですが・・
なんか見当違いな気がします
ヒントとしては
numって値変わりませんよね。
/*
これの場合、もしnumが3だったとして、num-1%2==0が2になるから、
2と表示されると思ったんですけど、駄目でした;
*/
これについても
num-1%2==0
ではなく
(num-1)%2==0
ではないですか?
確かにその方法でもできると思いますが…本当にnumを判定に使っていいんですね?
>ただしforを使わずwhileとifを使わないといけません。
残念…if文は使わないとだめでしたか。
ちなみに最初のプログラムからif文をなくすときれいにうごきます。
==============
何が言いたいのかというと、そのif文には意味がありません。
だって入力された数値が偶数ならiの値を出力
その条件に奇数の場合も付け加えたと、いう状態です。
つまり偶数でも奇数でもif文の条件を満たしてしまうのです。
ちなみに奇数の条件式?はnum%2==1です。
よ~く考えてくださいね。

ヒントとしては
numって値変わりませんよね。
/*
これの場合、もしnumが3だったとして、num-1%2==0が2になるから、
2と表示されると思ったんですけど、駄目でした;
*/
これについても
num-1%2==0
ではなく
(num-1)%2==0
ではないですか?
確かにその方法でもできると思いますが…本当にnumを判定に使っていいんですね?
>ただしforを使わずwhileとifを使わないといけません。
残念…if文は使わないとだめでしたか。
ちなみに最初のプログラムからif文をなくすときれいにうごきます。
==============
何が言いたいのかというと、そのif文には意味がありません。
だって入力された数値が偶数ならiの値を出力
その条件に奇数の場合も付け加えたと、いう状態です。
つまり偶数でも奇数でもif文の条件を満たしてしまうのです。
ちなみに奇数の条件式?はnum%2==1です。
よ~く考えてくださいね。

Re:以前ヒントを教えてもらったプログラムですが・・
おかげさまでカッコ付、if文なし両方ででました^^
バコネコさんのようにシンプルにやるやり方もあったんですね。
参考になりました。ご協力してくださった方々、本当にありがとうございました。

バコネコさんのようにシンプルにやるやり方もあったんですね。
参考になりました。ご協力してくださった方々、本当にありがとうございました。

Re:以前ヒントを教えてもらったプログラムですが・・
解決付いちゃったので、一つだけ…
あのif文のままではあってもなくてもおんなじです。
if(i%2==0)
と、してほしかったのですが…残念です。
ちなみにこの場合「i++」になります。
もし時間に余裕がありましたら、3の倍数とかにもチャレンジしてみてください。
できればnの倍数ができたら、理解できたと言えるレベルだと思います。
あ、一つじゃなかったですね。すいません…
あのif文のままではあってもなくてもおんなじです。
if(i%2==0)
と、してほしかったのですが…残念です。
ちなみにこの場合「i++」になります。
もし時間に余裕がありましたら、3の倍数とかにもチャレンジしてみてください。
できればnの倍数ができたら、理解できたと言えるレベルだと思います。
あ、一つじゃなかったですね。すいません…
Re:以前ヒントを教えてもらったプログラムですが・・
是非for文も覚えると良いので、for文でまず書いてみました。
この課題で重要なのは●●●の部分でしょう。
青部分を埋めればfor文版は完成です。
forとwhileは全く同じ動きに変換出来ますから、forが出来ればwhileにも出来ます。
さて、パコネコさんも仰っていますが、numは値が変わりませんね。
では、何が今刻一刻と変わっているのでしょう?
何の変数を判定に使わないといけないのでしょう?
もう一度考えてみて下さい。
※
うちの勝手な決まりなのですが、「初心者」という名前は使用禁止の名前になっています。
何故ならこの名前を使う方が沢山いて、誰が使っているか解らなくなってしまっているからです。
(現にポイント数が5万ポイントを超えています)
もしよければ自分だけの名前を決めて頂ければと思いますのでよろしくお願いします。
この課題で重要なのは●●●の部分でしょう。
#include <stdio.h>
int main(){
int i, num;
printf("数値を入力してください:");
scanf("%d", &num);
for( i=0; i<=num; i++ ){
if( ●●● ){
printf("%d\n",i);
}
}
return 0;
}
青部分を埋めればfor文版は完成です。
forとwhileは全く同じ動きに変換出来ますから、forが出来ればwhileにも出来ます。
さて、パコネコさんも仰っていますが、numは値が変わりませんね。
では、何が今刻一刻と変わっているのでしょう?
何の変数を判定に使わないといけないのでしょう?
もう一度考えてみて下さい。
※
うちの勝手な決まりなのですが、「初心者」という名前は使用禁止の名前になっています。
何故ならこの名前を使う方が沢山いて、誰が使っているか解らなくなってしまっているからです。
(現にポイント数が5万ポイントを超えています)
もしよければ自分だけの名前を決めて頂ければと思いますのでよろしくお願いします。
Re:以前ヒントを教えてもらったプログラムですが・・
このプログラムを自分で理解できたと思うとこまで、できましたか?
(納得いくぐらい)
もしくは似たような問題を解けるぐらいに…
もし不安な部分があるようでしたら、
暇なときでいいので解いてみてください。
さっきのプログラムをいじって、
偶数の場合を2の倍数だとして
自分で入力した値「n」
その値の倍数の数値を出力してください。
これができれば十分です。
===========
あ、すいません
進めちゃいました。

(納得いくぐらい)
もしくは似たような問題を解けるぐらいに…
もし不安な部分があるようでしたら、
暇なときでいいので解いてみてください。
さっきのプログラムをいじって、
偶数の場合を2の倍数だとして
自分で入力した値「n」
その値の倍数の数値を出力してください。
これができれば十分です。
===========
あ、すいません
進めちゃいました。

Re:以前ヒントを教えてもらったプログラムですが・・
初心者です。すいません、そういう規定があるの知らずに使ってました・・。
ただ書いてもらっただけで感謝です、一つじゃなくても。
#include <stdio.h>
int main(){
int i, num;
printf("数値を入力してください:");
scanf("%d", &num);
for( i=0; i<=num; i++ ){
if( i%2==0){
printf("%d\n",i);
}
}
return 0;
}
これで表示はされたのですが、自信はないです。
自分なりには、
iが0で、numまでの間、1ずつ増えていき、もし2で割ったあまりが0ならば表示します。
という解釈なのですが、とりあえず3の倍数をいじってみます。
==============
forをwhileに変えるとビルドエラーが出ますね。英語で見るとどちらも間という意味ですけど、
C言語だと若干違うんですね。
あとnの倍数やってみます!!
ただ書いてもらっただけで感謝です、一つじゃなくても。
#include <stdio.h>
int main(){
int i, num;
printf("数値を入力してください:");
scanf("%d", &num);
for( i=0; i<=num; i++ ){
if( i%2==0){
printf("%d\n",i);
}
}
return 0;
}
これで表示はされたのですが、自信はないです。
自分なりには、
iが0で、numまでの間、1ずつ増えていき、もし2で割ったあまりが0ならば表示します。
という解釈なのですが、とりあえず3の倍数をいじってみます。
==============
forをwhileに変えるとビルドエラーが出ますね。英語で見るとどちらも間という意味ですけど、
C言語だと若干違うんですね。
あとnの倍数やってみます!!

Re:以前ヒントを教えてもらったプログラムですが・・
すごく個性的な名前ですけど、今後ずっとそれでいいんでしょうか^^;
> 細かいとこで言うと「0」も描写されてませんか?
あ、私のミスですね。
偶数ということだったので、0からにしましたが、問題文からすると、2から始まらないといけないんですね。
まぁ最初にiにセットしている値を変更すればいいだけですね。
しかし、偶数と言えば0も含まれると思いますが、2からでいいんですか?
> 細かいとこで言うと「0」も描写されてませんか?
あ、私のミスですね。
偶数ということだったので、0からにしましたが、問題文からすると、2から始まらないといけないんですね。
まぁ最初にiにセットしている値を変更すればいいだけですね。
しかし、偶数と言えば0も含まれると思いますが、2からでいいんですか?
Re:以前ヒントを教えてもらったプログラムですが・・
すいません、僕のミスです。
管理人さんの仰る、0からで本当はよかったのですが、
せっかく、以前にこの1番上のプログラムを教えてくださった方がいたのに、
それを変えるのはちょっとまずいかなと思ったので、そのまま2から流れで来てしまいました;
for( i=0; i<=num; i++ ){
if( i%n==0){
たぶんこれでnの倍数がでるようになると思います。
>すごく個性的な名前ですけど、今後ずっとそれでいいんでしょうか^^;
だめですかwいろんなの考えたのですが、へたれとかゲロとか
まともなのが出てこなくて、、短いほうがいいですね。
管理人さんの仰る、0からで本当はよかったのですが、
せっかく、以前にこの1番上のプログラムを教えてくださった方がいたのに、
それを変えるのはちょっとまずいかなと思ったので、そのまま2から流れで来てしまいました;
for( i=0; i<=num; i++ ){
if( i%n==0){
たぶんこれでnの倍数がでるようになると思います。
>すごく個性的な名前ですけど、今後ずっとそれでいいんでしょうか^^;
だめですかwいろんなの考えたのですが、へたれとかゲロとか
まともなのが出てこなくて、、短いほうがいいですね。
Re:以前ヒントを教えてもらったプログラムですが・・
あってますね。
おめでとうです。
どうせなら自分で気に入ってるもののほうがいいですよ。
その名前でずっと呼ばれて行くんですから…
=========
逆に自分が気に入れば別に常識の範囲内なら何でもいいと思う。
あと、かぶってなければ…
おめでとうです。
どうせなら自分で気に入ってるもののほうがいいですよ。
その名前でずっと呼ばれて行くんですから…
=========
逆に自分が気に入れば別に常識の範囲内なら何でもいいと思う。
あと、かぶってなければ…

Re:以前ヒントを教えてもらったプログラムですが・・
なるほど、そうでしたか。よかったです。
>へたれとかゲロとか
なんでわざわざ^^;
ちなみにへたれさんはいらっしゃいますね。
過去に名前が使われているかどうかはメニューの「http://www.play21.jp/board/ranking.cgi?id=dixq」で確認出来ます。
数が多いので、検索かけるしかないですね。
それにしても人数多くなりました・・。
>へたれとかゲロとか
なんでわざわざ^^;
ちなみにへたれさんはいらっしゃいますね。
過去に名前が使われているかどうかはメニューの「http://www.play21.jp/board/ranking.cgi?id=dixq」で確認出来ます。
数が多いので、検索かけるしかないですね。
それにしても人数多くなりました・・。
Re:以前ヒントを教えてもらったプログラムですが・・
こちらこそよろしくおねがいします^^
===============
へたれいるんですね・・w若干冗談まじりだったんですけど。
===============
へたれいるんですね・・w若干冗談まじりだったんですけど。
