Add solutions.
This commit is contained in:
parent
3d4623e808
commit
bc4f807b0f
@ -17,9 +17,38 @@
|
||||
********************************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "../io/myio.h"
|
||||
|
||||
int inputNonZeroNumber(const char* text);
|
||||
int divideWithRemainder(int number1, int number2, int* remainder);
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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 <stdlib.h>
|
||||
#include <time.h>
|
||||
#include "../io/myio.h"
|
||||
|
||||
#define MIN_PREIS_IN_EUROS 5.15
|
||||
#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()
|
||||
{
|
||||
@ -53,15 +57,14 @@ int main()
|
||||
|
||||
// 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.);
|
||||
*/
|
||||
istWechselGeldKomplett = errechneWechselgeld(restBetragInEuro, &zweiEuroMuenzen, &fuenzigCentMuenzen, &zehnCentMuenzen);// 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);
|
||||
|
||||
@ -72,3 +75,42 @@ int main()
|
||||
|
||||
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