2016-10-15 7 views
0

私は、配列を埋めるためにユーザー入力を受け入れ、ユーザーがqを入力すると終了するプログラムに取り組んでいます。次に、配列は配列の中で最大の値を見つける関数に渡されます。私のプログラムはうまくいくと思われますが、配列のユーザー入力が間違っていると思いますが、解決方法がわかりません。配列を塗りつぶすためにユーザー入力の検証をループしながら、最大の配列を検索します。

#include <stdio.h> 
#define SIZE 30 

int maxnum(int userarray[], int maxx); 


int main() 
{ 
    int i; 
    int nums[SIZE]; 
    int largest; 


    printf("Type integer numbers (up to 30), followed by q to quit:\n"); 

    while(scanf("%d", &nums[i]) == 1) 
    { 
     for(i = 0; i < SIZE; i++) 
     { 
      //blank 
     } 
    } 

    largest = maxnum(nums, SIZE); 
    printf("The largest number is: %d\n", largest); 

    return 0; 
} 

int maxnum(int userarray[], int maxx) 
{ 
    int i; 
    int maxnumber; 

    maxnumber = userarray[0]; 

    for(i = 1; i < maxx; i++) 
    { 
     if(maxnumber < userarray[i]) 
     { 
      maxnumber = userarray[i]; 
     } 
    } 

    return maxnumber; 
} 

答えて

3

最初にiがユニット化されています。

あなたの内部のforループが異常です(なぜ誰かがそれをしますか?)そして最後にをSIZEに設定します。

私は詳細を与えることはありませんが、iの値があるため、それがあるべきものを2つの過ちのすべての時間ゴミです:

int i = 0; 

while((i<SIZE) && (scanf("%d", &nums[i]) == 1)) 
{ 
    i++; 
} 

ので、あなたは一つ一つを読み、そしてアウト配列から守ります第2の条件による境界のあなたは、アレイのに対しNUMS

largest = maxnum(nums, SIZE); 

を渡している

した後は、少数の有効な値を含めることができます。ちょうど渡す

largest = maxnum(nums, i); 
+0

どのように真を返します!一定。ありがとう –

0

あなたの問題の別の解決方法は次のとおりです。入力次に、I = 0の値を初期化し、NUMS MAXNUMにおいて[]アレイ

を更新:メイン()関数

int n,i=0; 
    while(scanf("%d",&n) == 1){ 
    nums[i++] = n; 
    } 
n = maxnum(nums, i); 
printf("The largest number is: %d\n", n); 

注で

() function

for(i = 0; i < maxx; i++) { 
    if(maxnumber < userarray[i]){ 
     maxnumber = userarray[i]; 
    } 
} 

注:スタートI = 0と最大mumberを見つけて、値

関連する問題