はじめまして。お世話になります。
最近独学でCをはじめましたが、どうしてもクリアできません。
(かなり初期の段階で(^^ゞ )
やりたいのは整数を入力して、入力した整数の数だけ「*」を表示したいのです。
ループから抜け出すこともできません。
どうかよろしくお願いいたします。
while文を利用して
Re:while文を利用して
今作っているプログラムコードがあれば投稿してもらえるとアドバイスしやすいかもしれません。
なお,抜け出すのはbreakで出来ますし,あらかじめループする回数が分かっているなら
for文などを使って決まった数回してやればいいと思います。
(whileでも出来ますが)
なお,抜け出すのはbreakで出来ますし,あらかじめループする回数が分かっているなら
for文などを使って決まった数回してやればいいと思います。
(whileでも出来ますが)
Re:while文を利用して
ループから抜け出せないのは恐らく、判定条件が不変になっているからではないでしょうか。
---------------------------------------
while(5){
printf("*");
}
printf("\n");
---------------------------------------
みたいな。
(上記のプログラムは実行すると物凄い(?)事になります)
やりかたには色々ありますが、とりあえず一例↓
---------------------------------------
int count = 5;
while(count > 0){
//'*'を表示させる処理
//変数countに何らかの処理を加える
}
---------------------------------------
日本語で書いてある部分を上手くプログラムに変えれば完成します。
上記のプログラムは、初めから値を入れています。
キーボードからの入力にする場合は"scanf関数"に修正すれば問題ないと思います。
---------------------------------------
while(5){
printf("*");
}
printf("\n");
---------------------------------------
みたいな。
(上記のプログラムは実行すると物凄い(?)事になります)
やりかたには色々ありますが、とりあえず一例↓
---------------------------------------
int count = 5;
while(count > 0){
//'*'を表示させる処理
//変数countに何らかの処理を加える
}
---------------------------------------
日本語で書いてある部分を上手くプログラムに変えれば完成します。
上記のプログラムは、初めから値を入れています。
キーボードからの入力にする場合は"scanf関数"に修正すれば問題ないと思います。
Re:while文を利用して
Dixq様 conio様
早速ありがとうございます。
自分で考えれたのは
int n ;
scanf("%d",&n);
printf("\n%d",n);
while(n>0){
printf("*");
}
printf("\n");
この辺りまでです。
なさけないですが、ここからどう抜け出すのか?
また、これで整数を入力した数だけ*が表示できるのか?
ほとんどわかっていません。
(これまでのテキストの流れで・・・こんなこと考えています。)
全くわかっていなくて 申し訳ございません<(_ _)>
早速ありがとうございます。
自分で考えれたのは
int n ;
scanf("%d",&n);
printf("\n%d",n);
while(n>0){
printf("*");
}
printf("\n");
この辺りまでです。
なさけないですが、ここからどう抜け出すのか?
また、これで整数を入力した数だけ*が表示できるのか?
ほとんどわかっていません。
(これまでのテキストの流れで・・・こんなこと考えています。)
全くわかっていなくて 申し訳ございません<(_ _)>
Re:while文を利用して
int n;
scanf("%d",&n);
例えば、9という値を入力したとします。
これはそのままnの値になりますね。
printf("\n%d",n);
9と表示されるでしょう。
while(n>0){
printf("*");
}
nの値は9です。よって、n>0を満たしています。
なので、永遠に printf("*") が行われます。
そもそも、while文というものは、
while(条件)で、条件を満たしていれば、
永遠に括弧内の処理が行われます。
よって、何かのタイミングで、
条件を満たさなくさせなくてはいけません。
この場合、条件はn>0ですので、
nを0以下にすればいいことは分かりますよね?
どうぞ、ご自分でお考えになってください。
ヒントを与えるとすれば、
9 (n>0)を満たす
8 (n>0)を満たす
7 (n>0)を満たす
6 (n>0)を満たす
5 (n>0)を満たす
4 (n>0)を満たす
3 (n>0)を満たす
2 (n>0)を満たす
1 (n>0)を満たす
0 (n>0)を満たさない
満たす数を数えてみてください、活路が見出せませんか?
scanf("%d",&n);
例えば、9という値を入力したとします。
これはそのままnの値になりますね。
printf("\n%d",n);
9と表示されるでしょう。
while(n>0){
printf("*");
}
nの値は9です。よって、n>0を満たしています。
なので、永遠に printf("*") が行われます。
そもそも、while文というものは、
while(条件)で、条件を満たしていれば、
永遠に括弧内の処理が行われます。
よって、何かのタイミングで、
条件を満たさなくさせなくてはいけません。
この場合、条件はn>0ですので、
nを0以下にすればいいことは分かりますよね?
どうぞ、ご自分でお考えになってください。
ヒントを与えるとすれば、
9 (n>0)を満たす
8 (n>0)を満たす
7 (n>0)を満たす
6 (n>0)を満たす
5 (n>0)を満たす
4 (n>0)を満たす
3 (n>0)を満たす
2 (n>0)を満たす
1 (n>0)を満たす
0 (n>0)を満たさない
満たす数を数えてみてください、活路が見出せませんか?
Re:while文を利用して
while文は( )の中がtrue(成立する)限り{}の中を繰り返す文です。
つまり
kyouさんの場合ですと、
while文の条件の(n>0)がずっと成り立っているので、0以下を入力しない限り無限ループを起こしているわけです。
これが成り立たないようにつまり、n<=0にしてしまえばwhile文は抜けることになります。
つまり、while文の中でnを減らしてやればいいのです。
ちなみにn -= 1(省略形 n--) は、今のnの値を1減らしてくれるものです。
while突入→*を描画→
n = 9のとき、n - 1 = 8を代入→(whileの条件を判定:n > 0が成立)→*を描画→
n = 8のとき、n - 1 = 7を代入→(whileの条件を判定:n > 0が成立)→*を描画→
・・・・
では、
n = 1のときはどうなると思いますか?
つまり
while(1){ ・・・・ }にすると無限ループをするわけです。
kyouさんの場合ですと、
while文の条件の(n>0)がずっと成り立っているので、0以下を入力しない限り無限ループを起こしているわけです。
これが成り立たないようにつまり、n<=0にしてしまえばwhile文は抜けることになります。
つまり、while文の中でnを減らしてやればいいのです。
ちなみにn -= 1(省略形 n--) は、今のnの値を1減らしてくれるものです。
while突入→*を描画→
n = 9のとき、n - 1 = 8を代入→(whileの条件を判定:n > 0が成立)→*を描画→
n = 8のとき、n - 1 = 7を代入→(whileの条件を判定:n > 0が成立)→*を描画→
・・・・
では、
n = 1のときはどうなると思いますか?
Re:while文を利用して
クロウさん。みなさん。
ありがとうございます。
できましたぁ。
ただし、再度みなさんが伝えてくださったことを
しっかり理解して出来るように、頑張って勉強します。
本当にありがとうございます。
ありがとうございます。
できましたぁ。
ただし、再度みなさんが伝えてくださったことを
しっかり理解して出来るように、頑張って勉強します。
本当にありがとうございます。