Add solutions.

This commit is contained in:
paulusja 2026-05-07 13:54:56 +02:00
parent 3d4623e808
commit bc4f807b0f
2 changed files with 74 additions and 3 deletions

View File

@ -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;
}

View File

@ -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);
@ -71,4 +74,43 @@ 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;
}