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!