/
MeineEingabe.cpp
118 lines (110 loc) · 2.79 KB
/
MeineEingabe.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
#include <climits>
#include <cfloat>
#include <cmath>
#include "MeineEingabe.h"
using namespace std;
/**
* Diese Funktion erfasst einen Wert vom Typ double aus dem Bereich von min bis max.
*
* @param min Der kleinst moegliche Wert.
* @param max Der groesst moegliche Wert.
* @return Der erfasste Wert aus dem Bereich von min bis max.
*/
double erfasseDouble(double min, double max)
{
if (max < min)
{
double zwsp = min;
min = max;
max = zwsp;
}
double eingabe = 0;
bool eingabe_ok = false;
cin.clear();
cin.unsetf(cin.skipws);
do
{
cin >> eingabe;
eingabe_ok = cin.good() && min <= eingabe && eingabe <= max;
cin.clear();
cin.ignore(static_cast<streamsize>(DBL_MAX), '\n');
if (!eingabe_ok)
{
}
} while (!eingabe_ok);
cin.setf(cin.skipws);
return eingabe;
}
/**
* Diese Funktion erfasst nur einen der vorgegebenen Werte. Zur Auswahl stehen:
* [0.00, 0.10, 0.50, 1.00, 2.00, 5.00, 10.00, 20.00, 50.00]
* @return Den erfassten Wert.
*/
double erfasseGeldeinheit()
{
bool flg = true;
double euro = 0;
do
{
flg = true;
euro = erfasseDouble(0.00, 50.00);
if (euro != 0 && euro != 0.1 && euro != 0.5 && euro != 1 && euro != 2 && euro != 5 && euro != 10 && euro != 20 && euro != 50)
flg = false;
}while (!flg);
return euro;
}
/**
* Diese Funktion erfasst einen Wert vom Typ long aus einem Wertebereich zwischen min bis max.
*
* @param min Der kleinst moegliche Wert.
* @param max Der groesst moegliche Wert.
* @return Der erfasste Wert aus dem Wertebereich zwischen min bis max.
*/
long erfasse_long(long min, long max)
{
if (max < min)
{
long zwsp = min;
min = max;
max = zwsp;
}
long eingabe = 0;
bool eingabe_ok = false;
cin.clear();
cin.unsetf(cin.skipws);
do
{
cin >> eingabe;
eingabe_ok = cin.good() && min <= eingabe && eingabe <= max;
cin.clear();
cin.ignore(static_cast<streamsize>(LONG_MAX), '\n');
if (!eingabe_ok)
{
cout << "Bitte eine ganze Zahl eingeben [";
cout << min << " - " << max << "]: ";
}
} while (!eingabe_ok);
cin.setf(cin.skipws);
return eingabe;
}
/**
* Erfasst einen Wert vom Typ int aus dem Wertebereich zwischen min bis max.
*
* @param min Der kleinst moegliche Wert.
* @param max Der groesst moegliche Wert.
* @return Der erfasste Wert aus dem Wertebereich zwischen min bis max.
*/
int erfasse_int(int min, int max)
{
return static_cast<int>(erfasse_long(min, max));
}
/**
* Erfasst eine Zeichenkette.
* @param eingabe Einen String.
*/
void erfasse_zeichenkette(string& eingabe)
{
cin >> eingabe;
cin.ignore(static_cast<streamsize>(LONG_MAX), '\n');
}