2017-02-12 26 views
-1

Я написал программу, в которой пользователь выбирает количество дней (от 3 до 10), чтобы ввести температуру для и затем вводить высокую и низкую температуру за каждый день , Проблема, с которой я сталкиваюсь, заключается в том, что я должен выводить наивысшую высокую и самую низкую температуру среди этих входов, а также в тот день, когда это было высокое и низкое. Мой код, кажется, всегда переходит к последнему дню, даже если он не содержит наивысшего максимума или самого низкого минимума, а день всегда на один день больше, чем количество выходных дней. Вот мой код:Неверный вывод правильного максимального и минимального значения из массива

#include <stdio.h> 

int main (void) 
{ 
    int i; 
    int limit; 
    int day[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    int high[10],low[10]; 

    printf("---===IPC Temperature Analyzer V2.0===---\n"); 

    printf("Please enter the number of days between 3 and 10, inclusive: "); 
    scanf("%d", &limit); 
    while (limit <= 2 || limit >= 11) { 
      printf("Invalid entry, please enter a number between 3 and 10, inclusive: "); 
      scanf("%d", &limit); 
    } 

    for(i = 0;i < limit; i++) { 
      printf("Day %d - High: ", day[i]); 
      scanf("%d", &high[i]); 
      printf("Day %d - Low: ", day[i]); 
      scanf("%d", &low[i]); 
    } 

    printf("\nDay Hi Low\n"); 
    for (i = 0; i < limit; i++) { 
      printf("%d %d %d\n", day[i], high[i], low[i]); 
    } 

    int max = 0; 
    int min = 0; 

    for (i = 0; i < limit; i++) { 
      if (high[max] < high[i]) 
      max = i; 
      if (low[min] < low[i]) 
      min = i; 

    } 

    printf("\nHighest temperature was: %d on day %d", high[max], day[max]); 

    printf("\nLowest temperature was: %d on day %d ", low[min], day[min]); 


    return 0; 

} 
+1

'if (max <высокий [i]);' Удалить'; ' – BLUEPIXY

ответ

1

Вы также необходимо инициализировать min и max после чтения вход.

int max = 0; 
int min = 0; 

for (i = 0; i < limit; i++) { 
    if (high[max] < high[i]) 
     max = i; 

    if (low[min] > low[i]) 
     low = i;  
} 

printf("\nHighest temperature was: %d on day %d", high[max], day[max]); 

printf("\nLowest temperature was: %d on day %d ", low[min], day[min]); 
1

Удалить ; от линии if (max < high[i]); и if (min > low[i]);

Кроме того, вы можете объединить эти две петли

for (i = 0; i < limit; i++) { 
     if (max < high[i]) 
     max = high[i]; 
} 

printf("\nHighest temperature was: %d on day %d", max, day[i]); 

for (i = 0; i < limit; i++) { 
     if (min > low[i]) 
     min = low[i]; 
} 

В один цикл, как этот

for (i = 0; i < limit; i++) { 
     if (max < high[i]) 
      max = high[i] 
     if (min > low[i]) 
      min = low[i]; 
} 
+0

@Bob__: Исправлено: – Shravan40

 Смежные вопросы

  • Нет связанных вопросов^_^