forked from paulusja/info1_uebungen
Add new exercises 05 and 06.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/********************************************************************************************
|
||||
* Schreiben Sie ein Programm, das zwei ganze Zahlen einliest und das Ergebnis der
|
||||
* ganzzahligen Division der beiden Zahlen sowie den Rest ausgibt. Schreiben Sie eine Funktion,
|
||||
* die beide Ergebnisse (Division + Rest) zurückgibt. Das Programm soll, wie gehabt, solange
|
||||
* nach einer Eingabe fragen, bis diese gültig ist.
|
||||
*
|
||||
* Beispielablauf:
|
||||
* Dividend
|
||||
* Geben Sie eine Zahl ein: qwert
|
||||
* Fehler! Keine Zahl!
|
||||
* Geben Sie eine Zahl ein: 32
|
||||
* Divisor
|
||||
* Geben Sie eine Zahl ein: 0
|
||||
* Fehler! Die Zahl darf nicht 0 sein!
|
||||
* Geben Sie eine Zahl ein: 5
|
||||
* Ergebnis: 32 / 5 ist 6 mit Rest 2.
|
||||
********************************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/********************************************************************************************
|
||||
* Das folgende Programm liest drei ganze Zahlen ein und macht dann etwas damit.
|
||||
*
|
||||
* 1) Überlegen Sie, was der Zweck des Programms ist und was es ausgibt (ohne es auszuführen).
|
||||
* 2) Benennen Sie die Variablen und Funktionen sinnvoll, um den Quelltext verständlicher zu
|
||||
* machen.
|
||||
* 3) Probieren Sie das Programm aus und verifizieren Sie Ihre Vermutung.
|
||||
*
|
||||
********************************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void funktion(int a, int b, int* c, int* d)
|
||||
{
|
||||
if(a > b) {
|
||||
*d = a;
|
||||
*c = b;
|
||||
}
|
||||
else {
|
||||
*d = b;
|
||||
*c = a;
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int a, b, c, d, e;
|
||||
|
||||
printf("Geben Sie drei ganze Zahlen ein: ");
|
||||
scanf("%d, %d, %d", &a, &b, &c);
|
||||
|
||||
funktion(a, b, &d, &e);
|
||||
funktion(b, c, &d, &e);
|
||||
funktion(a, c, &d, &e);
|
||||
|
||||
printf("Die Ausgabe ist %d, %d.\n", d, e);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/********************************************************************************************
|
||||
* Das folgende Programm liest eine Folge aus vier ganzen Zahlen sowie eine Anzahl n
|
||||
* ein und und soll die Zahlenfolge n mal rotieren. Dabei soll die Zahlenfolge nach jeder
|
||||
* Rotation ausgegeben werden.
|
||||
*
|
||||
* Implementieren Sie die Rotation, in dem Sie die Variablen geschickt tauschen.
|
||||
* 1) Überlegen Sie, wie Sie durch Tauschen eine Zahlenfolge rotieren könnten.
|
||||
* 2) Implementieren Sie eine geeignete Funktion, die zwei Variablen mittels call-by-reference
|
||||
* tauscht.
|
||||
* 3) Nutzen Sie diese Funktion, um die vier Variablen n mal zu rotieren.
|
||||
*
|
||||
* Beispiel:
|
||||
* >> Geben Sie vier ganze Zahlen ein (getrennt durch Kommata): 1, 2, 3, 4
|
||||
* >> Wie oft soll rotiert werden? 10
|
||||
* Vor der Rotation: 1, 2, 3, 4.
|
||||
* Nach der 1. Rotation: 4, 1, 2, 3
|
||||
* Nach der 2. Rotation: 3, 4, 1, 2
|
||||
* Nach der 3. Rotation: 2, 3, 4, 1
|
||||
* Nach der 4. Rotation: 1, 2, 3, 4
|
||||
* Nach der 5. Rotation: 4, 1, 2, 3
|
||||
* Nach der 6. Rotation: 3, 4, 1, 2
|
||||
* Nach der 7. Rotation: 2, 3, 4, 1
|
||||
* Nach der 8. Rotation: 1, 2, 3, 4
|
||||
* Nach der 9. Rotation: 4, 1, 2, 3
|
||||
* Nach der 10. Rotation: 3, 4, 1, 2
|
||||
*
|
||||
********************************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int a, b, c, d, n = 0;
|
||||
|
||||
printf("Geben Sie vier ganze Zahlen ein (getrennt durch Kommata): ");
|
||||
if (scanf("%d, %d, %d, %d", &a, &b, &c, &d) != 4)
|
||||
{
|
||||
printf("Fehlerhafte Eingabe!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
while(getchar() != '\n');
|
||||
printf("Wie oft soll rotiert werden? ");
|
||||
if(scanf("%d", &n) != 1 || n < 0)
|
||||
{
|
||||
printf("Fehlerhafte Eingabe!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("Vor der Rotation: %d, %d, %d, %d.\n", a, b, c, d);
|
||||
|
||||
// TODO
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/**************************************************************************************************************************
|
||||
* Schreiben Sie die fehlenden Funktionen für das untenstehende Programm und ergänzen Sie die mit TODO markierten *
|
||||
* Funktionsaufrufe. Der Rest des Programms darf nicht verändert werden. *
|
||||
* *
|
||||
* Das Programm simuliert einen Ticketautomaten, der einen Preis anzeigt und der mittels Eingabe bezahlt werden soll. Der *
|
||||
* Automat gibt dann mittels Ausgabe das Restgeld in 2-Euro-Münzen, 50-Cent-Münzen und 10-Cent-Münzen zurück. Dabei *
|
||||
* sollen immer möglichst viele der Münzen mit höheren Wert zurückgegeben werden. Wenn der Restbetrag nicht komplett *
|
||||
* durch diese Münzen ausbezahlt werden kann, wird die Differenz einbehalten. Der zu bezahlende Preis wird als Simulation *
|
||||
* zufällig im Intervall [MIN_PREIS_IN_EUROS; MAX_PREIS_IN_EUROS] ermittelt. *
|
||||
* *
|
||||
* 1. Möglicher Ablauf: *
|
||||
* *
|
||||
* Ticketautomat: Achtung! Restbetraege kleiner 10 Cents koennen nicht ausbezahlt werden! *
|
||||
* *
|
||||
* >> Bezahlen Sie bitte 6.31 Euro: 5 *
|
||||
* >> Bezahlen Sie bitte 6.31 Euro: ghgf *
|
||||
* >> Bezahlen Sie bitte 6.31 Euro: 10.5199999999 *
|
||||
* Sie haben 10.51 Euro bezahlt. Der Restbetrag von 4.20 wird nun ausgezahlt. *
|
||||
* *
|
||||
* Ihr Wechselgeld: 2x 2-Euro-Muenzen, 0x 50-Cent-Muenzen, 2x 10-Cent-Muenzen. *
|
||||
* *
|
||||
* 2. Möglicher Ablauf: *
|
||||
* *
|
||||
* Ticketautomat: Achtung! Restbetraege kleiner 10 Cents koennen nicht ausbezahlt werden! *
|
||||
* *
|
||||
* >> Bezahlen Sie bitte 9.28 Euro: 9 *
|
||||
* >> Bezahlen Sie bitte 9.28 Euro: 10 *
|
||||
* Sie haben 10.00 Euro bezahlt. Der Restbetrag von 0.72 wird nun ausgezahlt. *
|
||||
* *
|
||||
* Ihr Wechselgeld: 0x 2-Euro-Muenzen, 1x 50-Cent-Muenzen, 2x 10-Cent-Muenzen. *
|
||||
* *
|
||||
* Der Betrag konnte nicht komplett ausgezahlt werden. *
|
||||
* *
|
||||
**************************************************************************************************************************/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#define MIN_PREIS_IN_EUROS 5.15
|
||||
#define MAX_PREIS_IN_EUROS 12.95
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int zweiEuroMuenzen, fuenzigCentMuenzen, zehnCentMuenzen, istWechselGeldKomplett;
|
||||
double preisInEuro, bezahlterBetragInEuro, restBetragInEuro;
|
||||
|
||||
printf("\nTicketautomat: Achtung! Restbetraege kleiner 10 Cents koennen nicht ausbezahlt werden!\n\n");
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
// TODO: Der Preis soll in dieser Simulation zufällig ermittelt werden. Die Preisspanne ist oben als Konstanten hinterlegt.
|
||||
preisInEuro = ermittlePreis();
|
||||
// TODO: Das einzuwerfende Geld muss einer validen Eingabe entsprechen. Dafür muss u.a. mindestens der Preis bezahlt werden.
|
||||
bezahlterBetragInEuro = wirfGeldEin(preisInEuro);
|
||||
restBetragInEuro = bezahlterBetragInEuro - preisInEuro;
|
||||
|
||||
printf("Sie haben %.2lf Euro bezahlt. Der Restbetrag von %.2lf wird nun ausgezahlt.\n", bezahlterBetragInEuro, restBetragInEuro);
|
||||
|
||||
/* TODO
|
||||
istWechselGeldKomplett = errechneWechselgeld(// TODO: Argumente übergeben. Hier sollen u.a.die Anzahl an Münzen gesetzt werden.);
|
||||
*/
|
||||
|
||||
printf("\nIhr Wechselgeld: %2dx 2-Euro-Muenzen, %2dx 50-Cent-Muenzen, %2dx 10-Cent-Muenzen.\n", zweiEuroMuenzen, fuenzigCentMuenzen, zehnCentMuenzen);
|
||||
|
||||
if(!istWechselGeldKomplett)
|
||||
{
|
||||
printf("\nDer Betrag konnte nicht komplett ausgezahlt werden.\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user