Kleinste Zahl in einem Array gesucht



  • Hallo!

    Ich bin neu hier und habe ein kleines Problem mit meiner Übungsaufgabe. Wir sollen ein Array mittels scanf mit int-Werten auffüllen, dann soll in main() mittels Schleifen die Summe sowie Maximum und Minimum berechnet werden. Die einzelnen Werte des Arrays sollen auch ausgegeben werden.
    Es klappt auch alles, aber ich schaff das einfach nicht mit dem Minimum. Ich hab schon verschiedene Ansätze probiert, aber entweder kam 0 heraus, die .exe schmierte ab oder eine Endlosschleife trat auf.

    Wenn jemand eine wirklich simple Lösung griffbereit hätte, wäre ich sehr dankbar. 🙂

    #include <stdio.h>
    
    int main (void) {
    
    	int i=0,summe=0,min=0,max=0;
    	int array[10];
    
    	printf("\n");
    
    	for (i=1;i<=10;i++) {      // Schleife zum Auffüllen
    		printf("%i. Wert: ",i);
    		scanf("%i",&array[i-1]);
    	}
    
    	for (i=0;i<=9;i++) {       // Schleife zum Berechnen
    
    		if(array[i]>max)         // Maximum
    		 	max=array[i];
    
            // Innerhalb dieser for-Schleife sollen wir das Minimum berechnen!
    
    		summe+=array[i];  // Summenbildung des Arrays
    	}
    
    	printf("\n");
    
    	for (i=0;i<=9;i++) {       // Schleife für Arrayinhalt-Ausgabe
    		printf("%i   ",array[i]);
    	}
    
    	printf("\n\nSumme: %i\n",summe);  // Ausgabe der Werte
    	printf("Max: %i\n",max);
    	printf("Min: %i\n",min);
    
    }
    


  • Hallo Yutani,
    Das mit dem Minimum machst du einfach analog zu deinem "Finde-das-Maximum-des-Arrays"-Weg.
    Allerdings würde ich max und min, nachdem du mit scanf() alles eingelesen hast, den Wert array[0] zuweisen. Denn wie willst du z.B. sonst wissen, dass 0 das Minimum oder Maximum der Eingabe ist?

    Gruß Caipi



  • #include <stdio.h>
    
    int main (char *argv[], int args) 
    {
    
        int i,summe=0,min=0,max=0;
        int array[10];
    
        printf("\n");
    
        for (i=0;i<10;i++) {      // Schleife zum Auffüllen
            printf("%d. Wert: ",i);
            scanf("%d",&array[i]);
    		while(getchar()!='\n');
        }
    
    	max = array[0];
    	min = array[0];
    
        for (i=0;i<10;i++) {       // Schleife zum Berechnen
    
            if (array[i]>max)         // Maximum
                 max=array[i];
    
    		if (array[i]<min)
    			min=array[i];
            // Innerhalb dieser for-Schleife sollen wir das Minimum berechnen!
    
            summe+=array[i];  // Summenbildung des Arrays
        }
    
        printf("\n");
    
        for (i=0;i<10;i++) {       // Schleife für Arrayinhalt-Ausgabe
            printf("%d ",array[i]);
        }
    
        printf("\n\nSumme: %i\n",summe);  // Ausgabe der Werte
        printf("Max: %i\n",max);
        printf("Min: %i\n",min);
    
    return 0;
    
    }
    


  • Caipi schrieb:

    Hallo Yutani,
    Das mit dem Minimum machst du einfach analog zu deinem "Finde-das-Maximum-des-Arrays"-Weg.
    Allerdings würde ich max und min, nachdem du mit scanf() alles eingelesen hast, den Wert array[0] zuweisen. Denn wie willst du z.B. sonst wissen, dass 0 das Minimum oder Maximum der Eingabe ist?

    Gruß Caipi

    Super danke! Es hat geklappt, dank curry-kings Beispiel! 🙂 👍

    Erst hab ich nicht kapiert, was du genau meintest, daher:

    Könnte mir jemand bitte genau (also für Dummies) erklären, wieso ich min und max den Wert array[0] zuweisen muss? Ich muss das nämlich auch erklären können und das geht nur, wenn ich es richtig verstanden hab.

    Danke auf jeden Fall mal für eure Hilfe! 🙂



  • Könnte mir jemand bitte genau (also für Dummies) erklären, wieso ich min und max den Wert array[0] zuweisen muss?

    Wenn du mit "min=0;" startest und im Array nur positive Zahlen stehen, wird der aktuelle Wert immer größer sein als dein momentanes Minimum (analog bei "max=0;" und nur negativen Zahlen) - also bleibt das Minimum auf 0 bis zum Ende deiner Schleife, obwohl der tatsächliche Wert höher sein dürfte. Mit dem Startwert "min=array[0];" startest du dagegen irgendwo im Inneren deines Wertebereiches.

    btw könntest du auch mit "summe=array[0];" starten und die Schleife bei 1 beginnen.



  • OK, geschnallt! Vielen Dank für die Erklärung! 🙂


Anmelden zum Antworten