2012-03-12 11 views
-2

whileループを適用したいと書いています。while (a!=-1);それは終了する必要がありますが、それは常に "0"を印刷していると私は理由を知らない。説明できますか?whileループでゼロを印刷する

#include <stdio.h> 

int main() 
{ 
    long num; 
    int a,i,j; 
    int arr[10000]; 
    float x; 
    while(a != -1) 
    { 
     scanf("%d",&a); 
     int sum=0; 

     for(i=0;i<a;i++) 
     { 
      scanf("%d",&arr[i]); 
      sum = sum + arr[i]; 
     } 
     x = sum%a; 

     if (x == 0) 
     { 
      int z = sum/a; 
      int y=0; 
      for(j=0;j<a;j++) 
      { 
       if (arr[j]>z) 
       { 
        y = (arr[j] - z) + y ; 
       } 
      } 
      printf("%d",y); 
     } 
     else 
      printf("-1"); 

    } 

} 

yと思われます。それが終了するように避ける方法?

+0

問題の動作を示す最小限の例を考え出すことができますか?ここにはたくさんのことがあります。一文字変数を使用して以来、このプロシージャが何をすべきかを決定することは難しいです。 –

+0

なぜprintf( " - 1")ですか?なぜ印刷しないのですか( " - 1")? – DanRedux

+2

'while'ループに入る前に' a'を初期化していないことに気付きました。 – chrisaycock

答えて

-1

私は実際に私はループ内で私のscanf("%d",&a);を取る必要があります私の答えを得た;

0

while(a != 0)と書いたければ、実際にはwhile(a != -1)と書いてあります。

修正します。 0と入力すると、ループが終了します。

3

最初に、whileループを実行する前にaを初期化できませんでした。そのため、プログラムの動作は未定義となり、ただちに終了することができます。

第2に、あなたの質問に「while(a!= 0)」と言ったのですが、あなたのコードは「while(a!= -1)」と言います。どちらが正しいか:0または-1?たぶん、-1を0に変更しただけでは、プログラムは期待どおりに動作します。

関連する問題