2016-04-20 9 views
-2

私はクラスでループを学習しています。ラボの1つでは、ユーザーが不特定多数の整数を入力して平均を計算する方法を理解する必要があります。私は、ユーザーが以下のように終了するループのために平均化される整数の番号を入力することができます知っている:ループを終了する別の方法は?

int count = 0, value = 0, sum = 0, numberofintegers = 0; 
double avg = 0; 

printf("enter the number of integers you wish to average\n"); 
scanf("%d",&numberofintegers); 
//loop 
while (count < numberofintegers) 
{ 
printf("enter a positive integers\n"); 
scanf("%d",&value); 
sum = sum + value; 
count = count + 1; 
} 

avg = (double) sum/count; 

だから、基本的に、私は整数の数が順に平均化されるように、ユーザの入力を持つことができますループを終了させるには、ユーザーが入力をせずにループを終了させる別の方法が必要ですか?

+0

numberofintegersの値を取らずにループを終了したいですか? – iOS

+1

'printf("正の整数を入力する\ n ");'キーワードは* "陽性"です。ユーザーに入力したい番号の数を聞かないでください。ユーザーが負の数を入力するまで、入力される数字の数を数えてください。 – user3386109

+0

@ user3386109:負の整数を入力する方法がわからないように、ユーザーは非常に鈍いと思います。 – sjsam

答えて

1

通常は(たとえば-1)

input = read_a_value(); 
while(input != -1) 
{ 
    // do something with input 
    input = read_a_value(); 
} 
1

scanfのような所定の「違法」の数は、成功したエントリの数を返します使用したいです。

これにより、問題が解決する場合があります。

#include<stdio.h> 

int main(void) 
{ 
    int number, total = 0, count = 0; 
    char c; 
    printf("Enter a number to continue, a character to exit\n"); 

    while (scanf("%d", &number) == 1) 
    { 
     total+= number; 
     count++; 
    } 

    /* You need to handle the case where no valid input is entered */ 
    (count > 0) ? printf("Average : %.2f\n", (float)total/count) : printf("No valid numbers entered\n"); 
    /* I have casted the average to float to keep the precision*/ 
    while (getchar() != '\n') 
     ;; 
    printf("Press any key to continue.."); 
    getchar(); 
    return 0; 
} 

崩壊は、ユーザが繰り返しEnter Keyを押すとscanf関数は入力のプロンプトを表示し続けることです。実際にはscanffgetsに置き換えてください。見てくださいhere

0

ユーザーが入力する数字が多すぎないと確信できる場合は、文字列を使用します。 文字列の長さ、あなたはあなたに応じて選択し、数字を得るためにスペースを使用して分割することができます

+0

あなたのポイントを実証し明確にするためのサンプルコードを提供してください。 – dYale