Aufgabe "Funktionen"
← Do + While | ● | Rekursion →
a) Erstellen Sie ein Programm, das die Länge eines Streckenzuges durch die nacheinander angegebenen Punkte (x,y) eines zwei-dimensionalen Koordinatensystems ermittelt. Verwenden Sie die Mathe-Standardbibliothek math.h zur Berechnung des Pythagoras der Teilstrecken. Schreiben Sie eine C-Funktion zur Berechnung der Streckenlänge zwischen zwei Punkten $\vec{v_1}=(v1_x,v1_y)$ und $\vec{v_2}=(v2_x,v2_y)$:
Bitte Startpunkt x,y eingeben: 5,3 ↵
Neuer Streckenpunkt x,y (Abbruch mit 0): 2,4 ↵
Neuer Streckenpunkt x,y (Abbruch mit 0): 7,9 ↵
Neuer Streckenpunkt x,y (Abbruch mit 0): 0 ↵
=> Die Streckenlaenge betraegt: 10.23 Einheiten
b) Schreiben Sie eine Datumskonvertierungsfunktion, welche eine Datumsangabe bestehend aus Tag/Monat/Jahr in den laufenden Tag des Jahres umwandelt.
Beachten Sie das Schaltjahr und schreiben Sie hierfür eine Funktion, welche einen entsprechenden bool’schen Wert zurückgibt, wenn ein bestimmtes Jahr ein Schaltjahr ist.
Ein bestimmtes Jahr ist ein Schaltjahr, wenn
- das Jahr durch 4 teilbar ist
- und das Jahr nicht durch 100 teilbar ist
- oder das Jahr durch 400 teilbar ist.
Datum: 1.3.2000 ↵
Laufender Tag: 61 (Schaltjahr)
c) Würfelspiel bis 100:
Spielregeln bei diesem Würfelspiel: Zwei Spieler wechseln sich mit Würfeln ab. Jeweils ein Spieler darf so oft würfeln wie er will. Die Summe der bisher erzielten Augen bekommt er gutgeschrieben, würfelt er aber eine 1, so erhält er nichts und der jeweils andere Spieler kommt an die Reihe. Es gewinnt, wer als erster insgesamt 100 Augen gewürfelt hat.
Erstellen Sie ein C-Programm, welches das Spiel simuliert und dabei die Rolle des ersten Spielers übernimmt. Der Computer soll dabei nach folgender Strategie spielen: Er würfelt solange, bis seine Punktzahl 19 übersteigt oder er 5 mal gewürfelt hat.
Das Programm soll den Benutzer fragen, ob er noch einmal würfeln möchte. Nach dem Würfeln soll jeweils der momentane Zwischenstand ausgegeben werden.
Vorschlag: Schreiben Sie für einen Spielzug des Rechners und der gegnerischen Person jeweils eine Funktion, welche die erzielten Punkte ermittelt und zurückgibt.
{
int punkte=0;
...
return(punkte);
}
Hinweis: Zufällige Augenzahlen erzeugt man via:
#include <time.h>
srand(time(NULL));
z1=rand()%6+1;
z2=rand()%6+1;
...
Zusatzaufgabe:
d) Schreiben Sie Funktionen für die Bitweisen Operationen Lesen, Setzen, Löschen und Negieren einzelner Bits eines Bitmusters. Lesen sie ein Bitmuster als Hexadezimalzahl ein und speichern Sie den entsprechenden Wert in einer Variable. Anhand eines Menüs soll dieser Wert durch die entsprechenden Funktionsaufrufe bitweise geändert und ausgegeben werden. Es sind keine globalen Variablen erlaubt!
Bitte geben sie 1 Byte als Hexadezimalzahl ein: 0×80 ↵
1: Bit setzen
2: Bit loeschen
3: Bit negieren
4: Ende
Ihre Wahl: 1 ↵
Auf welche Bitposition soll sich die Operation beziehen? (7..0): 2 ↵
Nach der Operation ergibt sich folgendes Bitmuster: 10000100 (0×84)
Ihre Wahl: 4 ↵
← Do + While | ● | Rekursion →