Der größte Wert
Das dritte Muster findet den größten Wert. Stell dir vor, du gehst einen Stapel Klassenarbeiten durch, um die beste zu finden. Du nimmst die erste Arbeit in die Hand. Dann siehst du dir die anderen eine nach der anderen an, und immer wenn eine besser ist als die in deiner Hand, nimmst du stattdessen diese. Am Ende hältst du die beste Arbeit in der Hand. Im Code ist die Arbeit in deiner Hand eine Variable:
int punkte[] = {72, 45, 90, 38, 64};
int anzahl = sizeof(punkte) / sizeof(punkte[0]);
int hoechster = punkte[0];
for (int i = 1; i < anzahl; i++) {
if (punkte[i] > hoechster) {
hoechster = punkte[i];
}
}
printf("Höchste Punktzahl: %d\n", hoechster);Das gibt Folgendes aus:
Höchste Punktzahl: 90Die Variable hoechster beginnt mit dem ersten Element. Deshalb kann die Schleife beim Index 1 beginnen: Das erste Element muss nicht mit sich selbst verglichen werden (mit 0 würde es aber auch funktionieren). 45 ist nicht größer als 72, aber 90 ist es, also wird hoechster zu 90. Weder 38 noch 64 sind größer als 90, deshalb bleibt 90 bis zum Ende.
Warum nicht mit 0 beginnen? Weil 0 vielleicht gar keiner der Werte ist. Wären alle Werte negativ, zum Beispiel die Wintertemperaturen {-5, -2, -8}, bliebe die Startzahl 0 die größte, und das Programm würde 0 ausgeben, eine Temperatur, die im Array gar nicht vorkommt. Das erste Element ist immer ein sicherer Start.
Den kleinsten Wert findest du genauso, nur mit < statt >.
Manchmal musst du auch wissen, wo der größte Wert steht. Dann merke dir seinen Index in einer zweiten Variablen und ändere beide Variablen gemeinsam:
int punkte[] = {72, 45, 90, 38, 64};
int anzahl = sizeof(punkte) / sizeof(punkte[0]);
int hoechster = punkte[0];
int bester_index = 0;
for (int i = 1; i < anzahl; i++) {
if (punkte[i] > hoechster) {
hoechster = punkte[i];
bester_index = i;
}
}
printf("Schüler %d hat die meisten Punkte: %d\n", bester_index + 1, hoechster);Das gibt Folgendes aus:
Schüler 3 hat die meisten Punkte: 90bester_index beginnt bei 0, dem Index des ersten Elements, und ändert sich immer, wenn sich hoechster ändert. Am Ende ist er 2, die Nummer des Schülers, ab 1 gezählt, ist also bester_index + 1.
So schreibst du es:
Anweisungen
- 1
Das Array
preiseenthält die Preise von Kopfhörern in einem Onlineshop. Erstelle eine Variablehoechstervom Typintmit dem ersten Preis,preise[0]. - 2
Gehe
preisemit einer Schleife durch und speichere inhoechsterjeden Preis, der größer alshoechsterist. Gib das Ergebnis nach der Schleife alsHöchster Preis: 2499aus. - 3
Finde heraus, um welche Kopfhörer es sich handelt. Erstelle neben
hoechstereine Variablehoechster_indexmit dem Wert0und speichere in der Schleife den Indexidarin, wenn duhoechsteränderst. Gib nach der Schleife in der nächsten Zeile die Nummer der Kopfhörer, ab 1 gezählt, aus:Nummer: 4.