ページ 11

起動しません(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 リクト
ありがとうございました。
おかげで起動しました^^