2016-10-15 4 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 странный (почему кто-то это сделал?) И устанавливает i в SIZE, в конце концов, что плохо.

я не дам больше деталей, но значение i это мусор все время из-за этих 2-х ошибок, он должен быть:

int i = 0; 

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

так что вы читали один за другим, и защитить от массива из границ второго условия.

После этого вы передаете NUMS

largest = maxnum(nums, SIZE); 

тогда массив может содержать меньше допустимых значений. Just pass

largest = maxnum(nums, i); 
+0

как верно !! исправлено. благодаря –

0

Это еще одно решение проблемы.

В основной() функции

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

Примечание: Инициализировать значение I = 0, а затем ввод и обновление НУМС [] массив

В MAXNUM()

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

Примечания: Start я = 0 и найти максимальный mumber и вернуть значение