2017-02-12 2 views
-1

Ich habe ein Programm geschrieben, bei dem der Benutzer eine Anzahl von Tagen (zwischen 3 und 10) für die Eingabe der Temperatur und die Eingabe der Höchst- und Tiefsttemperatur für jeden Tag auswählt . Das Problem, das ich habe, ist, dass ich die höchste hohe und niedrigste niedrige Temperatur unter diesen Eingaben sowie den Tag ausgeben muss, an dem dieses Hoch und Tief aufgetreten ist. Mein Code scheint immer auf den letzten Tag zu springen, auch wenn er nicht die höchste oder die niedrigste Tiefe enthält und der Tag immer einen Tag länger ist als die Anzahl der ausgegebenen Tage. Hier ist mein Code:Fehler beim Ausgeben des korrekten Maximal- und Minimalwerts aus dem Array

#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 BLUEPIXY

Antwort

1

kombinieren Sie Außerdem müssen Sie nach dem Lesen Min und Max initialisieren die Eingabe.

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

entfernen ; aus der Leitung if (max < high[i]); und if (min > low[i]);

Sie können auch diese beiden Schleifen

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]; 
} 

In einer for-Schleife wie diese

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

@Bob__: Korrigiert :) – Shravan40

Verwandte Themen