ページ 1 / 1
起動しません(T T)
Posted: 2010年11月18日(木) 22:53
by リクト
ただいま私は偶数なら2で割り奇数なら1足してから2で割る、というものなのですが、
どうもうまく起動しません;;
是非理由を教えてください
以下プログラムコード
#include <stdio.h>
int keisan(int x);
int main(void)
{
int y;
static int x;
printf("数値を入れて下さい:");
scanf("%d",&x);
do{
y=(keisan(x));
printf("%d\n",y);
}while(y>1);
return 0;
}
int keisan(int x)
{
if(x%2==1){
x++;}
x=x/2;
return x;
}
Re:起動しません(T T)
Posted: 2010年11月18日(木) 22:56
by みけCAT
起動しましたが、無限ループが発生しました。
こういうことですか?
#include <stdio.h>
int keisan(int x);
int main(void)
{
int y;
static int x;
printf("数値を入れて下さい:");
scanf("%d",&x);
y=x;/*追加:yに値をコピー*/
do{
/*y=(keisan(x));
これだとxの値が変わっていないため無限ループ
*/
y=(keisan(y));
printf("%d\n",y);
}while(y>1);
return 0;
}
int keisan(int x)
{
if(x%2==1){
x++;}
x=x/2;
return x;
}
Re:起動しません(T T)
Posted: 2010年11月18日(木) 22:58
by みけCAT
これだけのコードならばxはいらないと思います。
#include <stdio.h>
int keisan(int x);
int main(void)
{
int y;
/*static int x; */
printf("数値を入れて下さい:");
/*scanf("%d",&x); */
scanf("%d",&y);
do{
y=(keisan(y));
printf("%d\n",y);
}while(y>1);
return 0;
}
int keisan(int x)
{
if(x%2==1){
x++;}
x=x/2;
return x;
}
Re:起動しません(T T)
Posted: 2010年11月18日(木) 22:59
by リクト
すみません、上の補足説明です。
本来は、例えば24を入れたとすると、
24
12
6
3
2
1
と表示されるはずなのですが、
上のプログラムでは
12
12
12
・
・
・
となってしまいます。
Re:起動しません(T T)
Posted: 2010年11月18日(木) 23:01
by リクト
ありがとうございました。
おかげで起動しました^^