2016-06-22 13 views
0

Ich versuche, die Zahlen vom Benutzer zu erhalten, so viele sie eingeben möchten. In einem Menü. Ich habe alles bekommen, was ich tun musste, um zu arbeiten, außer für diese Kleinstnummer. Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. Ich weiß nicht, wie ich die Nummer im Schalter bekommen würde.Was kann ich tun, damit meine Programme die niedrigste Nummer in einem Switch in einer do while-Schleife behalten?

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <stdlib.h> 
#define PAUSE system("pause") 
#define CLEAR system("cls") 

main() { 
    // Initialize variables 
    char choice; 
    int sum = 0; 
    int avg = 0; 
    int high = 0; 
    int low = 0; 
    int quit = 0; 
    int i = 0; 
    int num = 0; 
    int j = 0; 
    int prevNum; 

    do{ 
     printf("What would you like to do\n" 
     "A: enter an integer\n" 
     "B: show sum\n" 
     "C: Show average\n" 
     "D: show Highest num\n" 
     "E: Show lowest\n" 
     "Q: quit\n"); 
     scanf("%c", &choice); 
     CLEAR; 

    switch (choice) { 
    case 'A': 
     printf("Enter an Integer\n"); 
     scanf("%i", &num); 
     j++; 
     sum = num + sum; 

     if (num > high) 
      high = num; 

     PAUSE; 
     break; 

    case 'B': 
     printf("The sum of al numbers entered is %i\n", sum); 
     PAUSE; 
     break; 

    case 'C': 
     avg = sum/j; 
     printf("The average of all numbers entered is %i\n",avg); 
     PAUSE; 
     break; 

    case 'D': 
     printf("The Highest number entered is %i\n", high); 
     PAUSE; 
     break; 

    case 'E': 

     printf("The lowest number entered is %i\n", low); 
     PAUSE; 
     break; 

    case 'Q': 
     quit = 1; 
     break; 


    } // end switch 

} while (quit != 1); 

PAUSE; 
} // END MAIN 
+4

Könnten Sie tun es für die höchste, kann aber nicht für die niedrigste? Hm. –

Antwort

2

Sie können einfach verwenden:

if (num < low) { 
    low = num; 
} 

Das einzige Problem ist die erste Zahl. Da Sie low bis 0 initialisieren, wird jede positive Zahl, die der Benutzer eingibt, nicht niedriger als diese sein. Sie müssen die erste Nummer speziell behandeln. Sie können dafür den Wert j überprüfen.

Dann testen Sie diese Variable in Ihrem A Fall.

case 'A': 
    printf("Enter an Integer\n"); 
    scanf("%i", &num); 
    j++; 
    sum = num + sum; 

    if (j == 1 || num > high) 
     high = num; 
    if (j == 1 || num < low) 
     low = num; 

    PAUSE; 
    break; 
0

ordnungsgemäße Initialisierung ist obligatorisch.

vorschlagen:

high sollte INT_MIN initialisiert werden.

low sollte auf INT_MAX initialisiert werden.

Hinweis: Diese Makros befinden sich in stdint.h.

dann nach den beiden Linien:

if (num > high) 
    high = num; 

setzen Sie die beiden Linien:

if(num < low) 
    low = num;