Aufgabe 1
1. Formatierte Ausgabe von Text und Zahlen
Die unten gegebene Ausgabe ist mit der vorgegebenen Variablenliste so zu erstellen, dass
nur diese Variablen mit den entsprechenden Formatelementen verwendet werden. In den
Formatstrings darf kein fixer Text (also auch keine Leerzeichen) verwendet werden.
Das Programm hat folgenden Aufbau:
Hinweis:Code:int main(void) { char ch1 = ’|’; char ch2 = ’+’; char line[] = "----------"; char h[] = "HHHHHHHHHH"; char t[] = "TTTTTTTTTT"; char l[] = "LLLLLLLLLL"; int x = 3728; unsigned y = 56; long z = 1234567890; double d = 723.985; // Hier wird mit printf()-Anweisungen die Ausgabe erzeugt return 0; } Die Ausgabe besitzt folgende Form 1234567890123456789012345678901234567890 +--------------------------------------+ | | | HH HH TTTTTTTTTT LL | | HH HH TTTTTTTTTT LL | | HH HH TT LL | | HHHHHHHHHH TT LL | | HHHHHHHHHH TT LL | | HH HH TT LL | | HH HH TT LLLLLLLLLL | | HH HH TT LLLLLLLLLL | | | +--------------------------------------+ %1234567890% "+000723.99" "7.24E+002 " \ 070 0x38\ \+000003728\Der String
"HHH TTT"
kann z.B. mit folgender printf()-Anweisung erzeugt werden:
printf("%-6.3s%.3s", h, t);
Aufgabe 2
Lineare Programme
1. Benzinverbrauch
Das Programm soll den zwischen zwei Tankstopps eines Autos liegenden durchschnittlichen Benzinverbrauch pro 100 km
und die Benzinkosten ausgeben.
Zum Abspeichern der Kilometerstände ist ein ganzzahliger
Datentyp zu verwenden.
Beispiel:
Code:Kilometerstand beim letzten Tankstopp -> 94328 Kilometerstand beim heutigen Tankstopp -> 94870 Benzinverbrauch in Liter -> 39.5 Benzinpreis pro Liter in Euro -> 1.312 --------------------------------------------------- Durchschnittlicher Benzinverbrauch: 7.29 l / 100 km Durchschnittliche Benzinkosten: 0.096 Euro / km
2. Stromrechnung
Es soll eine Stromrechnung erstellt werden. Folgende Werte werden über die Tastatur
eingelesen: Alter Zählerstand in kwH, neuer Zählerstand in kwH, Preis pro kwH,
Grundgebühr, Umsatzsteuer in Prozent.
Ausgabe: Rechnungsbetrag inklusive Umsatzsteuer
Beispiel:
Code:Neuer Zaehlerstand (kwH) -> 114196 Grundgebuehr in Euro -> 52.00 Preis pro kwH in Euro -> 0.1433 Ust in % -> 20 ---------------------------------------- Rechnungsbetrag inkl. UST EUR 608.03, davon 20 % Ust: 101.34
3. Geldbetrag
Einzugeben ist ein Geldbetrag in EUR. Anschließend ist auszugeben, wie viele Geldscheine
bzw. Münzen höchstens notwendig sind, um den Betrag auszuzahlen.
Beispiel:
Code:Betrag in EUR -> 845.77 1 mal 500 EUR 1 mal 200 EUR 1 mal 100 EUR 0 mal 50 EUR 2 mal 20 EUR 0 mal 10 EUR 1 mal 5 EUR 1 mal 50 Cent 1 mal 20 Cent 0 mal 10 Cent 1 mal 5 Cent 1 mal 2 Cent 0 mal 1 Cent
4. Zinsen
Einzugeben sind Kapital, Zinssatz (in Prozent) und Laufzeit (in Jahren, Monaten und
Tagen). Das Programm soll die einfachen bankmäßigen Zinsen und das verzinste Gesamtkapital
berechnen (jedes Monat ist mit 30 Tagen und jedes volle Jahr mit 360
Tagen zu rechnen).
Beispiel:
Code:Kapital (in Euro) --> 1234.56 Zinssatz (in %) --> 4.5 Verzinsungsdauer (im Format j-m-d) --> 3-7-12 --------------------------------------------------- Es ergeben sich Zinsen von 200.92 Euro. Wert des einfach verzinsten Gesamtkapitals: 1435.48 Euro.
5. Marathonlauf
Ein (Marathon)Läufer gibt seine Leistungen für eine bestimmte Trainingsstrecke ein:
die Zeit in Stunden, Minuten und Sekunden sowie die gelaufene Strecke in Meter. Er
möchte wissen, wie lange er für die Marathondistanz von 42195m benötigt, wenn er
um einen einzugebenden Prozentsatz mehr Zeit benötigt wie auf der Teststrecke.
Beispiel:
Code:Laenge der Teststrecke in m --> 7500 Zeit fuer die Teststrecke (hh:mm:ss) --> 00:43:17 Wie viel % Leistungsverlust beim Marathon --> 7 ---------------------------------------------------------- Geschaetzte Marathonzeit 4 Stunden 21 Minuten 50 Sekunden
6. Freier Fall
Mit Hilfe dieses Programms soll sowohl die Falldauer als auch die Aufprallgeschwindigkeit
bei einem freien Fall (ohne Berücksichtigung der Luftreibung) in einem Gravitationsfeld
bestimmt werden. Einzugeben sind dabei die Fallhöhe sowie die auftretende
Fallbeschleunigung. Zu bestimmen ist die Aufprallgeschwindigkeit (in km/h sowie in
m/s) als auch die Falldauer in Sekunden (eventuell Umrechnung in Stunden, Minuten
und Sekunden).
Beispiel:
Code:Fallhoehe in m --> 1500 Fallbeschleunigung (auf der Erde 9.81m/sˆ2) --> 9.81 ---------------------------------------------------------- Falldauer: 17.49s (0h 0min 17.49sec) Aufprallgeschwindigkeit: 171.55m/s oder 617.59km/h
Aufgabe 3
Bedingte Verzweigung
1. Dreieck
Schreiben Sie ein Programm, das zunächst die 3 Seitenlängen eines Dreiecks
einliest. Danach sind die drei Werte aufsteigend zu sortieren und es ist zu prüfen,
ob die 3 eingegebenen Seiten ein Dreieck bilden.
Hinweis:
Drei Strecken a, b und c mit a <= b <= c bilden genau dann ein Dreieck, wenn a+b > c
gilt.
Wenn die 3 eingegebenen Seitenlängen ein Dreieck bilden ist weiter zu prüfen, ob
ein besonderes Dreieck vorliegt. Das Programm liest also 3 Seiten und erzeugt
genau eine der folgenden Ausgaben:
- Allgemeines Dreieck
- Gleichschenkeliges Dreieck
- Gleichseitiges Dreieck
- Rechtwinkeliges Dreieck
- Gleichschenkelig und rechtwinkeliges Dreieck
- Kein Dreieck
Beispiele:
Code:1.Seite --> 3.8 2.Seite --> 10.9 3.Seite --> 2.9 Kein Dreieck --------- 1.Seite --> 1 2.Seite --> 1.414213 3.Seite --> 1 Gleichschenkelig und rechtwinkeliges Dreieck
2. Einkommenssteuergesetz
Laut Österreichischem Einkommensteuergesetz berechnet sich die jährliche Lohnsteuer
bei einem zu versteuerndem Jahreseinkommen von e € gemäß der folgenden
Tabelle:
Einkommen e Einkommensteuer in Euro
- bis 10.000€ : 0
- über 10.000€ bis 25.000€ : (e - 10000) * 5750 / 15000
- über 25.000€ bis 51.000€ : ((e - 25000) * 11335 / 26000) + 5750
- über 51.000€ (e - 51000) * 0,5 + 17085
Schreiben Sie ein C-Programm, welches ein jährliches zu versteuerndes Einkommen
einliest und das die zu bezahlende jährliche Einkommensteuer berechnet
und ausgibt. Bei einem negativen Eingabewert ist eine entsprechende Meldung
auszugeben.
3. s=v*t
Schreiben Sie ein Programm, das mit Hilfe der Formel s = v * t (Weg = Geschwindigkeit
mal Zeit) jede beliebige der drei Größen berechnet und ausgibt, wenn die
beiden anderen eingegeben werden.
Ein möglicher Dialog könnte lauten:
Code:Was soll berechnet werden ? 1...Weg 2...Geschwindigkeit 3...Zeit Bitte Ihre Wahl eingeben --> 2 Weg in km eingeben --> 183 Zeit in h eingeben --> 2.4 Die Geschwindigkeit betraegt 76.25 km/h, das sind 21.18 m/s.
Beachte Sie: Die Division durch Null ist zu vermeiden und mit Hilfe einer Fehlermeldung
abzufangen.
4. Koordinaten
Schreiben Sie ein Programm, welches die Koordinaten von vier Punkten der Ebene
einliest und das feststellt, welches der angegebenen Vierecke die vier Punkte
in der eingegebenen Reihenfolge bilden:
- allgemeines Viereck
- Rechteck
- Quadrat
- Rhombus (Raute)
- Deltoid
- Parallelogramm
Hinweise:
1)Die Art jedes der Vierecke kann bestimmt werden, indem man die Seitenlängen
sowie die Längen der Diagonalen berechnet und miteinander vergleicht.
2)Den Abstand d zwischen zwei Punkten A(xa=ya) und B(xb=yb) berechnet man
mit Hilfe der Formel
Code:d=sqrt((xa-xb)²+(yq-yb)²)
5. Winkel
Schreiben Sie ein Programm, welches die Winkel und eines Dreiecks in zwei
Variable vom Typ float einliest und das den den dritten Dreieckswinkel
berechnet.
Danach soll ausgegeben werden, um welche Art von Dreieck es sich handelt:
- stumpfwinkelig
- rechtwinkelig
- spitzwinkelig
- gleichseitig
- gleichschenkelig
- rechtwinkelig-gleichschenkelig
- kein Dreieck
Hinweis:
Es können auch mehrere Eigenschaften gleichzeitig auftreten. So kann
ein stumpfwinkeliges Dreieck auch gleichzeitig gleichschenkelig sein.
Hinweis für alle Aufgaben
Beim Vergleichen von Fließkommawerten ist die Prüfung auf exakte Gleichheit mit Hilfe
des Operators '==' zu vermeiden. Zwei Fließkommawerte gelten als gleich, wenn sie
sich nicht um mehr als 0,00001 (1E-5) unterscheiden.
Zwei Fließkommawerte a und b gelten also als gleich, wenn
ist. Dabei ist double fabs (double); eine Bibliotheksfunktion, welche math.h erfordertCode:fabs (a-b) < 1E-1
(bestimmt den Absolutbetrag einer double-Variablen).