In diesem Labor üben Sie die Algorithmen aus Vorlesung 10 & 11:
break)0, Produkt bei 1.(double) casten: (double)summe / n.position = -1 als „nicht gefunden", mit break nach dem ersten Treffer aufhören.temp-Variable.> für aufsteigend, < für absteigend.Berechnen Sie die Summe aller Werte in einem Array und geben Sie sie aus.
int zahlen[6] = {3, 7, 2, 8, 5, 1};0 startetsumme += zahlen[i];)#include <stdio.h> int main() { int zahlen[6] = {3, 7, 2, 8, 5, 1}; int summe = 0; // Startwert for (int i = 0; i < 6; i++) { summe += zahlen[i]; // aufaddieren } printf("Summe: %d\n", summe); return 0; }
Berechnen Sie den Durchschnitt von 5 Noten — mit zwei Nachkommastellen.
int noten[5] = {2, 1, 3, 2, 4};(double) casten, Ausgabe mit %.2f#include <stdio.h> int main() { int noten[5] = {2, 1, 3, 2, 4}; int summe = 0; for (int i = 0; i < 5; i++) { summe += noten[i]; } double schnitt = (double)summe / 5; // cast für Nachkommastellen printf("Durchschnitt: %.2f\n", schnitt); return 0; }
Zählen Sie, wie viele Noten besser als 3 sind (also kleiner als 3).
int noten[8] = {3, 2, 4, 2, 1, 5, 2, 3};0 startetif-Bedingung prüfen, bei Treffer anzahl++#include <stdio.h> int main() { int noten[8] = {3, 2, 4, 2, 1, 5, 2, 3}; int anzahl = 0; for (int i = 0; i < 8; i++) { if (noten[i] < 3) { anzahl++; } } printf("Noten besser als 3: %d\n", anzahl); return 0; }
Berechnen Sie das Produkt aller Array-Werte. Achtung: Der Startwert ist hier nicht 0!
int zahlen[5] = {1, 2, 3, 4, 5};1 (warum nicht 0? → mit 0 wäre alles 0!)produkt *= zahlen[i];#include <stdio.h> int main() { int zahlen[5] = {1, 2, 3, 4, 5}; int produkt = 1; // Startwert 1, nicht 0! for (int i = 0; i < 5; i++) { produkt *= zahlen[i]; } printf("Produkt: %d\n", produkt); return 0; }
Suchen Sie einen Wert im Array und geben Sie seine Position aus. Wird er nicht gefunden, soll das gemeldet werden.
int zahlen[6] = {4, 8, 15, 16, 23, 42};, gesucht: 16position = -1 als Startwert („nicht gefunden")break aufhörenif (position != -1) ...#include <stdio.h> int main() { int zahlen[6] = {4, 8, 15, 16, 23, 42}; int gesucht = 16; int position = -1; // -1 = nicht gefunden for (int i = 0; i < 6; i++) { if (zahlen[i] == gesucht) { position = i; break; // gefunden -> aufhören } } if (position != -1) printf("%d gefunden an Position %d\n", gesucht, position); else printf("%d nicht gefunden\n", gesucht); return 0; }
Zählen Sie, wie oft ein Wert im Array vorkommt — diesmal ohne break, weil wir alle Treffer wollen.
int zahlen[9] = {3, 7, 3, 1, 3, 9, 3, 2, 5};, gesucht: 3anzahl++ — kein break#include <stdio.h> int main() { int zahlen[9] = {3, 7, 3, 1, 3, 9, 3, 2, 5}; int gesucht = 3; int anzahl = 0; for (int i = 0; i < 9; i++) { if (zahlen[i] == gesucht) { anzahl++; // KEIN break -> weiter zählen } } printf("%d kommt %d mal vor\n", gesucht, anzahl); return 0; }
Sortieren Sie ein Array mit Bubble Sort aufsteigend und geben Sie es danach aus.
int zahlen[5] = {5, 3, 8, 1, 4};i, innere j bis n - 1 - izahlen[j] > zahlen[j+1] → tauschen (mit temp)#include <stdio.h> int main() { int zahlen[5] = {5, 3, 8, 1, 4}; int n = 5, temp; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (zahlen[j] > zahlen[j + 1]) { temp = zahlen[j]; // Swap zahlen[j] = zahlen[j + 1]; zahlen[j + 1] = temp; } } } printf("Sortiert: "); for (int i = 0; i < n; i++) printf("%d ", zahlen[i]); printf("\n"); return 0; }
Nehmen Sie Ihren Bubble Sort aus Aufgabe 7 und sortieren Sie absteigend (größte Zahl zuerst). Tipp: nur ein Zeichen ändern!
int zahlen[5] = {5, 3, 8, 1, 4};> auf < ändern#include <stdio.h> int main() { int zahlen[5] = {5, 3, 8, 1, 4}; int n = 5, temp; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (zahlen[j] < zahlen[j + 1]) { // nur < statt > temp = zahlen[j]; zahlen[j] = zahlen[j + 1]; zahlen[j + 1] = temp; } } } printf("Absteigend: "); for (int i = 0; i < n; i++) printf("%d ", zahlen[i]); printf("\n"); return 0; }
Die Königsaufgabe: Sortieren Sie ein Array aufsteigend und geben Sie dann Minimum, Maximum und Durchschnitt aus. Nach dem Sortieren stehen Min und Max ganz am Rand!
int zahlen[6] = {7, 2, 9, 4, 5, 3};zahlen[0]), Max = letztes (zahlen[n-1])#include <stdio.h> int main() { int zahlen[6] = {7, 2, 9, 4, 5, 3}; int n = 6, summe = 0, temp; /* 1. Bubble Sort (aufsteigend) */ for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - 1 - i; j++) if (zahlen[j] > zahlen[j + 1]) { temp = zahlen[j]; zahlen[j] = zahlen[j + 1]; zahlen[j + 1] = temp; } /* 2. Summe für den Durchschnitt */ for (int i = 0; i < n; i++) summe += zahlen[i]; /* 3. Min = erstes, Max = letztes Element */ printf("Min: %d, Max: %d\n", zahlen[0], zahlen[n - 1]); printf("Durchschnitt: %.2f\n", (double)summe / n); return 0; }
Damit beherrscht ihr die Algorithmen-Bausteine aus VL 9–11: Akkumulieren (Summe, Durchschnitt, Zählen, Produkt), Suchen (Position, alle Vorkommen) und Sortieren (Bubble Sort auf-/absteigend). Genau diese Muster braucht ihr in der Klausur.
Die Passwörter stehen unten — frei zugänglich. Bitte fair spielen: erst selbst probieren, dann mit der Musterlösung vergleichen. Eine Lösung, die ihr nur abgeschrieben habt, hilft euch in der Klausur nicht.
| Aufgabe | Thema | Passwort |
|---|---|---|
| Aufgabe 1 | Summe eines Arrays | sum101 |
| Aufgabe 2 | Notendurchschnitt | avg202 |
| Aufgabe 3 | Zählen mit Bedingung | cnt303 |
| Aufgabe 4 | Produkt berechnen | prod404 |
| Aufgabe 5 | Lineare Suche (Position) | pos505 |
| Aufgabe 6 | Alle Vorkommen zählen | vor606 |
| Aufgabe 7 | Bubble Sort (aufsteigend) | sort707 |
| Aufgabe 8 | Absteigend sortieren | desc808 |
| Aufgabe 9 | Alles kombinieren | komb909 |