forked from paulusja/info1_uebungen
Add solutions.
This commit is contained in:
parent
3d4623e808
commit
bc4f807b0f
@ -17,9 +17,38 @@
|
|||||||
********************************************************************************************/
|
********************************************************************************************/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "../io/myio.h"
|
||||||
|
|
||||||
|
int inputNonZeroNumber(const char* text);
|
||||||
|
int divideWithRemainder(int number1, int number2, int* remainder);
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
int number1 = getNumber("Geben Sie eine Zahl ein: ");
|
||||||
|
int number2 = inputNonZeroNumber("Geben Sie eine Zahl ein (!=0): ");
|
||||||
|
int remainder = 0;
|
||||||
|
int divisonResult = divideWithRemainder(number1, number2, &remainder);
|
||||||
|
|
||||||
|
printf("%d / %d = %d, R: %d\n", number1, number2, divisonResult, remainder);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int inputNonZeroNumber(const char* text)
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
while(result == 0)
|
||||||
|
{
|
||||||
|
result = getNumber(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int divideWithRemainder(int n1, int n2, int* remainder)
|
||||||
|
{
|
||||||
|
*remainder = n1 % n2;
|
||||||
|
return n1 / n2;
|
||||||
}
|
}
|
||||||
@ -37,10 +37,14 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include "../io/myio.h"
|
||||||
|
|
||||||
#define MIN_PREIS_IN_EUROS 5.15
|
#define MIN_PREIS_IN_EUROS 5.15
|
||||||
#define MAX_PREIS_IN_EUROS 12.95
|
#define MAX_PREIS_IN_EUROS 12.95
|
||||||
|
|
||||||
|
double ermittlePreis();
|
||||||
|
double wirfGeldEin(double preisInEuro);
|
||||||
|
int errechneWechselgeld(double restBetrag, int *anzahlZweiEuro, int *anzahlFuenzigCent, int *anzahlZehnCent);
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
@ -53,15 +57,14 @@ int main()
|
|||||||
|
|
||||||
// TODO: Der Preis soll in dieser Simulation zufällig ermittelt werden. Die Preisspanne ist oben als Konstanten hinterlegt.
|
// TODO: Der Preis soll in dieser Simulation zufällig ermittelt werden. Die Preisspanne ist oben als Konstanten hinterlegt.
|
||||||
preisInEuro = ermittlePreis();
|
preisInEuro = ermittlePreis();
|
||||||
|
|
||||||
// TODO: Das einzuwerfende Geld muss einer validen Eingabe entsprechen. Dafür muss u.a. mindestens der Preis bezahlt werden.
|
// TODO: Das einzuwerfende Geld muss einer validen Eingabe entsprechen. Dafür muss u.a. mindestens der Preis bezahlt werden.
|
||||||
bezahlterBetragInEuro = wirfGeldEin(preisInEuro);
|
bezahlterBetragInEuro = wirfGeldEin(preisInEuro);
|
||||||
restBetragInEuro = bezahlterBetragInEuro - preisInEuro;
|
restBetragInEuro = bezahlterBetragInEuro - preisInEuro;
|
||||||
|
|
||||||
printf("Sie haben %.2lf Euro bezahlt. Der Restbetrag von %.2lf wird nun ausgezahlt.\n", bezahlterBetragInEuro, restBetragInEuro);
|
printf("Sie haben %.2lf Euro bezahlt. Der Restbetrag von %.2lf wird nun ausgezahlt.\n", bezahlterBetragInEuro, restBetragInEuro);
|
||||||
|
|
||||||
/* TODO
|
istWechselGeldKomplett = errechneWechselgeld(restBetragInEuro, &zweiEuroMuenzen, &fuenzigCentMuenzen, &zehnCentMuenzen);// TODO: Argumente übergeben. Hier sollen u.a.die Anzahl an Münzen gesetzt werden.);
|
||||||
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);
|
printf("\nIhr Wechselgeld: %2dx 2-Euro-Muenzen, %2dx 50-Cent-Muenzen, %2dx 10-Cent-Muenzen.\n", zweiEuroMuenzen, fuenzigCentMuenzen, zehnCentMuenzen);
|
||||||
|
|
||||||
@ -71,4 +74,43 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double ermittlePreis()
|
||||||
|
{
|
||||||
|
|
||||||
|
int minCents = 100 * MIN_PREIS_IN_EUROS;
|
||||||
|
int maxCents = 100 * MAX_PREIS_IN_EUROS;
|
||||||
|
|
||||||
|
int zufallsPreisInCent = rand() % (maxCents - minCents + 1) + minCents;
|
||||||
|
|
||||||
|
return zufallsPreisInCent / 100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double wirfGeldEin(double preisInEuro)
|
||||||
|
{
|
||||||
|
double eingabe = 0;
|
||||||
|
|
||||||
|
printf("Bitte bezahlen Sie %.2lf Euro.\n", preisInEuro);
|
||||||
|
|
||||||
|
while(eingabe < preisInEuro)
|
||||||
|
{
|
||||||
|
eingabe = getDoubleNumber("Bitte Geld einwerfen: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
return eingabe;
|
||||||
|
}
|
||||||
|
|
||||||
|
int errechneWechselgeld(double restBetrag, int *anzahlZweiEuro, int *anzahlFuenzigCent, int *anzahlZehnCent)
|
||||||
|
{
|
||||||
|
unsigned int restBetragCent = restBetrag * 100;
|
||||||
|
|
||||||
|
*anzahlZweiEuro = restBetragCent / 200;
|
||||||
|
restBetragCent %= 200;
|
||||||
|
*anzahlFuenzigCent = restBetragCent / 50;
|
||||||
|
restBetragCent %= 50;
|
||||||
|
*anzahlZehnCent = restBetragCent / 10;
|
||||||
|
restBetragCent %= 10;
|
||||||
|
|
||||||
|
return restBetragCent == 0;
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user