In „Prozedurale Programmiertechnik“ sind wir weiter auf Kontrollstrukturen, sprich Schleifen eingegangen.
Dieses mal ging es um die „while“ als auch die „do-while“ Schleife, die wir anhand von kleinen Programmieraufgaben verinnerlichen sollten. Diese Aufgaben sind unten aufgelistet.
Aufgaben zu „while“
Übung (Ergänzen Sie den Rechner um folgende Funktionen)
- Geben Sie die Zahlen 1 bis 1000 auf dem Bildschirm aus!
- Berechnen yx!
Beispiel: 23 = 2 * 2 * 2 = 8 - Ergänzen Sie yx um den Sonderfall y0 =1.
- Berechnen Sie n! (Fakultät)!
n != n * (n-1) * (n-2) * … * 2 * 1
Beispiel: 4 != 4 * 3 * 2 = 24 - Berechnen Sie alle ganzzahligen Teiler einer Ganzzahl!
Beispiel: 12 -> 12, 6, 4, 3, 2, 1
Hinweis:
Modulo 11 % 3 = 2 (ganzzahliger Rest der Division 11/3)
Der Schwierigkeitsgrad steigt mit den Aufgaben und ich muss sagen, dass bei mir alle Programme zwar laufen, aber nicht alle das tun, was sie sollen.
Den Fehler habe ich bei den beiden Aufgaben „Exponieren“ und „Fakultät“ leider nicht gefunden, deswegen werde ich mich wohl nochmal an meine Kommilitonen oder den Dozenten wenden.
Aufgaben zu „do-while“
Aufgabe war es, einen Zufallszahlen-Generator zu erstellen, der eine Zahl zwischen 1 und 15 definiert und der Anwender hat drei Versuche, diese Zahl zu erraten.
War nicht ganz simpel, hat aber funktioniert!
Hier mein Code:
#include<stdio.h> #include<stdlib.h> void main() { //Systemzeit zur Initialisierung des Zufallsgenerators int MaxZufallszahl=15; int zufallszahl; int eingabe=0; int i=3; long sekunden; time(&sekunden); /* aktuelle Zeit in Sekunden ermitteln */ srand(sekunden); /* Initialisierung Zufallsgenerator */ zufallszahl = rand() % MaxZufallszahl +1; printf("Erraten Sie die Zahl zwischen 1 und 15! \n"); do { printf("Sie haben %d Versuche. \n", i); printf("Geben Sie eine Ihren Tipp ab: \n"); fflush(stdin); scanf("%d", &eingabe); if (eingabe<zufallszahl) { printf("Ihre Zahl ist zu klein! \n"); } else if (eingabe>zufallszahl) { printf("Ihre Eingabe ist zu gross! \n"); } else { printf("Sie haben die Zahl erraten. Glückwunsch! \n"); } } while ((i--, i>0) && (eingabe!=zufallszahl)); printf("Sorry, Sie haben alle drei Versuche verbraucht! \n"); printf("Die Zufallszahl ist %d", zufallszahl); }
Mehr war eigentlich am Freitag auch nicht, deswegen ist der Artikel auch recht übersichtlich.
Fazit
Ich überlege mir ernsthaft, ob ich noch regelmässig zu dieser Vorlesung gehe, denn das „Coden“ (Programmieren) kann ich mir auch mit einem Buch zu Hause beibringen und das vielleicht sogar effizienter.
Die Skripte habe ich alle hier, so dass ich eigentlich weiss, was dran wäre. Naja, mal sehen!