Aufgabe 1
a) Kehren Sie zum ggT Programm (aus Grundlagen, Teil 2) zurück. Überarbeiten Sie das Programm so, dass es mittels C++ Ausnahmen mögliche Fehler abfängt. Nach dem Abfangen eines Fehlers soll das Programm eine vernünftige Fehlermeldung ausgeben und sich beenden.
#include "MEIN_EIGENER_HEADER.h"
// Einbinden der eigenen Header-Datei
using namespace std;
int main() {
try {
bool bend = false;
int i1 = 0, i2 = 0, tmp = 0, n = 1;
while (bend == false)
{
cout << "Zwei positive ganze Zahlen eingeben: "; if (cin >> i1) // Wenn der eingelesene Wert in i1 gespeichert werden kann,
{
if (cin >> i2) // Wenn der eingelesene Wert in i2 gespeichert werden kann,
{
if (i1 > 0 && i2 > 0) // Wenn i1 größer als 0 und i2 größer als 0
{
while (i1 != i2) // Solange i1 ungleich i2
{
cout << "\t(" << i1 << "," << i2 << ")" << endl;
if (i1 < i2) // Wenn i1 kleiner als i2
{
i2 = i2 - i1;
}
else
{
tmp = i1;
i1 = i2;
i2 = tmp - i1;
}
++n;
} // Ende von while
cout << "\t(" << i1 << "," << i2 << ")" << endl;
cout << n << " Schritte zum ggT\n" << endl;
}
else
{
error("i1 und i2 muessen positiv sein.");
}
}
else // Wenn der eingelesene Wert nicht in i2 gespeichert werden kann
{
error("i2 ist keine ganze Zahl.");
}
}
else // Wenn der eingelesene Wert nicht in i1 gespeichert werden kann
{
error("i1 ist keine ganze Zahl.");
}
} // Ende von while
}
catch (exception &e)
{
cerr << e.what();
}
catch (...) // Fängt alle anderen Ausnahmefehler ab
{
cerr << "Fehler unbekannt.";
}
}
b) Kehren Sie zum Ziffer/Zeichenketten Programm – Aufgabe 6 aus dem 2. Praktikumsblatt – zurück. Überarbeiten Sie auch dieses Programm entsprechend der obigen Aufgabenstellung a).
#include
#include "MEIN_EIGENER_HEADER.h"
using namespace std;
int main() {
try {
string stmp = "<>";
int itmp = 0;
vector vNames;
vector vScores;
while (cin >> stmp >> itmp && (stmp != "noname" || itmp != 0)) // Solange die Eingabe in stmp, itmp gespeichert werden kann und stmp ungleich noname und itmp ungleich 0 ist
{
for (int i = 0; i < vNames.size(); i++) // Prüfen, ob ein Name bereits eingegeben wurde
{
if (vNames[i] == stmp)
{
error("Achtung, es wurde ein Name doppelt eingegeben.\n\"" + stmp + "\" ist schon einmal vorhanden.\nProgramm wird nun beendet.\n");
return 1;
}
}
vScores.push_back(itmp); // Speichern des eingelesenen Wertes itmp im Vektor vScores
vNames.push_back(stmp); // Speichern des eingelesenen Wertes stmp im Vektor vNames
}
if (cin.fail()) // Wenn die Eingabe fehlschlägt
{
error("Fehlerhafte Eingabe. Der erste Begriff muss ein Name, der zweite Begriff eine Zahl, sein.");
}
else // Ansonsten Ausgabe der Daten
{
cout << "Folgende Daten wurden einegegeben:\n" << endl;
for (int i = 0; i < vNames.size(); i++)
{
cout << vNames[i] << ", " << vScores[i] << endl;
}
}
return 0;
}
catch (exception &e)
{
cerr << e.what();
}
catch (...)
{
cerr << "Fehler nicht bedacht." << endl;
}
}
c) (Optional) Überarbeiten Sie entsprechend alle bisher durchgenommenen Programmbeispiele, die keine Fehlerbehandlung mit C++ Exceptions enthalten.
Aufgabe 2
a) Schreiben Sie ein Programm, das eine Reihe von Zahlen einliest und in einem vector<int> Container speichert. Nachdem der Benutzer eine beliebige Anzahl von Zahlen eingegeben hat, fragt das Programm, wie viele Zahlen davon aufaddiert werden sollen. Lautet die Antwort n, werden die ersten n Elemente des vector Containers sowie deren Summe ausgegeben.
Beispielsweise: Geben Sie einige Zahlen ein (mit ‚q‘ beenden Sie die Eingabe): 12 23 13 24 15 q Wie viele Zahlen sollen aufaddiert werden: 3 Die Summe der erste 3 Elemente 12, 23 und 13 ist 48.
Verwenden Sie Ausnahmen, um möglichst alle Fehler zu behandeln. Behandeln Sie v.a. alle möglichen Eingaben. Stellen Sie auch sicher, dass eine vernünftige Fehlermeldung ausgegeben wird, wenn mehr Zahlen addiert werden sollen als im vector vorhanden sind.
#include
#include "MEIN_EIGENER_HEADER.h"
#include
using namespace std;
int main() {
try {
vector vzahlen;
int itemp = 0, iausgabe = 0, isumme = 0;
char cend = 'a';
cout << "Geben Sie einige Zahlen ein (mit 'q' beenden Sie die Eingabe):" << endl; while (cend != 'q') // Solange nicht q eingegeben wurde { if (cin >> itemp) // Wenn die Eingabe itemp gespeichert werden kann
{
vzahlen.push_back(itemp);
}
else // Schreibe Wert in Vektor
{
cin.clear();
if (cin >> cend && cend != 'q') // Wenn die Eingabe erfolgreich und nicht q eingegeben wurde
{
error("Es duerfen nur 'q' oder ganze Zahlen als Operatoren eingegeben werden. Programm wird nun beendet.");
}
}
}
cout << "Wie viele Zahlen sollen aufaddiert werden:" << endl; if (cin >> iausgabe) // Wenn Eingabe in iausgabe gespeichert werden kann
{}
else
{
error("Eingegebener Wert ungueltig. Programm wird nun beendet.");
}
if (vzahlen.size() >= iausgabe) // Wenn weniger Zahlen aufaddiert werden sollen, als im Vektor gespeichert sind
{
cout << "Die Summe der ersten " << iausgabe << " Elemente ";
for (int i = 0; i < iausgabe; i++) // Aufaddieren der Werte
{
cout << vzahlen[i];
isumme = isumm e + vzahlen[i];
if (i < iausgabe - 2) // Formatierung der Ausgabe,
{
cout << ", ";
}
else
{
if (i < iausgabe - 1)
{
cout << " und ";
}
}
}
cout << " ist " << isumme << endl;
}
else
{
error("Zu wenig Stellen");
}
return 0;
}
catch (exception &e)
{ // Fangen des Fehlers error
cerr << e.what();
return 1;
}
catch (...)
{ // Fangen von allen anderen Ausnahmefehlern
cerr << "Unbekannter Fehler. Programm wird beendet.";
return 1;
}
}
b) Erweitern Sie das Programm so, dass double-Werte statt int-Werte verwendet werden. Erstellen Sie einen zusätzlichen vector Container mit double-Werten für die (n-1) Differenzen zwischen den jeweils nacheinander eingegebenen Werten. Geben Sie auch die Differenzen aus.
#include
#include "MEIN_EIGENER_HEADER.h"
using namespace std;
void dsumme(const vector& vzahlen, const int& iausgabe) // Anlegen einer Funktion dsumme ohne Rückgabewert, die die Summe der ersten X Werte berechnet
{
double dsum = 0.0;
cout << "Die Summe der ersten " << iausgabe << " Elemente ";
for (int i = 0; i < iausgabe; i++)
{
cout << vzahlen[i];
dsum = dsum + vzahlen[i];
if (i < iausgabe - 2) // Formatierung der Ausgabe
{
cout << ", ";
}
else
{
if (i < iausgabe - 1)
{
cout << " und ";
}
}
}
cout << " ist " << dsum << endl;
}
void ddifferenzen(const vector& vdifferenzen) // Funktion zur Ausgabe der n-1 Differenz
{
cout << "Die Differenz der Zahlen lautet: ";
for (int i = 0; i < vdifferenzen.size(); i++)
{
cout << vdifferenzen[i];
if (i < vdifferenzen.size() - 2) // Formatierung der Ausgabe
{
cout << ", ";
}
else
{
if (i < vdifferenzen.size() - 1)
{
cout << " und ";
}
}
}
cout << endl;
return 0;
}
int main() {
try {
vector vzahlen;
vector vdifferenzen;
double itemp = 0;
int iausgabe = 0;
char cend = 'a';
cout << "Geben Sie einige Zahlen ein (mit 'q' beenden Sie die Eingabe):" << endl; while (cend != 'q') { // Solange nicht q eingegeben wurde if (cin >> itemp) // Wenn die Eingabe in itemp gespeichert werden kann
{
vzahlen.push_back(itemp); // Schreibe itemp in den Vektor
if (vzahlen.size() > 1) // Berechnung der Differenzen nur möglich, wenn mehr als ein Wert eingegeben wurde
{
if (vzahlen[vzahlen.size() - 2] >= vzahlen[vzahlen.size() - 1]) // Dieses if-else Konstrukt ermittelt den Betrag zwischen zwei Zahlen, immer größere Zahl - kleinere und schreibt die Differenz in einen eigenen Vektor
{
vdifferenzen.push_back(vzahlen[vzahlen.size() - 2] - vzahlen[vzahlen.size() - 1]);
}
else
{
vdifferenzen.push_back(vzahlen[vzahlen.size() - 1] - vzahlen[vzahlen.size() - 2]);
}
}
}
else
{
cin.clear();
if (cin >> cend && cend != 'q')
{
error("Es duerfen nur 'q' oder ganze Zahlen als Operatoren eingegeben werden.");
}
}
} // Ende von while
cout << "Wie viele Zahlen sollen aufaddiert werden?" << endl; if (cin >> iausgabe) // Wenn die Eingabe in iausgabe gespeichert werden kann, tue nichts
{}
else
{
error("Eingegebener Wert ist ungueltig.");
}
if (vzahlen.size() >= iausgabe) // Wenn Vektorgröße größer gleich der eingegebenen Zahl
{
dsumme(vzahlen, iausgabe); // Funktionsaufruf dsumme und Übergabe der Parameter
ddifferenzen(vdifferenzen); // Funktionsaufruf ddifferenzen und Übergabe der Parameter
}
else
{
error("Es wurden weniger Zahlen eingegeben, als ausgegeben werden sollen.");
}
return 0;
}
catch (exception &e) // Abfangen von error
{
cerr << e.what();
return 1;
}
}
Aufgabe 3
a) Zeichnen Sie einen Parserbaum nach den vorgestellten formalen Grammatikregeln für den Rechenausdruck (17-4)/(5-1).
b) Erweitern Sie das Mini-Rechner Programm aus der Vorlesung so, dass auch negative Zahlen direkt eingegeben werden können. Ein Rechenausdruck wie -7*3 soll auch so eingegeben werden können, und nicht wie bislang nur als (0-7)*3 akzeptiert werden. Hinweise: Sie müssen dafür die wie folgt erweiterte Grammatik implementieren:
Primary : Number ‚(‚ Expression ‚)‘ ‚-‚ Primary ‚+‘ Primary
Faktor (Punktoperand) : Zahl ‚(‚ Rechenausdruck ‚)‘ ‚-‚ Faktor ‚+‘ Faktor
Implementieren Sie unäres Minus und unäres Plus.
#ifndef TOKEN_H
#define TOKEN_H
class Token
{
public:
char kind; // Kategorien
double value; // Bei Zahlenkategorie: ein Wert
Token(char ch) // Memberfunktion: erstelle ein Token aus einem char
: kind(ch), value(0)
{} /* mache nichts sonst */
Token(char ch, double val) //Memberfunktion: erstelle ein Token aus einem char und einem double
: kind(ch), value(val)
{}/* mache nichts sonst */
};
class Token_stream
{
public:
Token_stream() : full(false), buffer(' ')
{} // Konstruktor
void putback(Token t) // Token "zurückstellen"
{
if (full) error("Token_stream::putback(), Puffer voll!\n");
buffer = t;
full = true;
};
Token get(); // Token aus cin erzeugen
private:
bool full; // ist buffer voll?
Token buffer;
};
Token Token_stream::get()
{
if (full)
{
full = false;
return buffer;
}
char ch;
cin >> ch;
switch (ch)
{
case 'h': case 'H':
{
return Token('h');
}
case ';': // Ende eines Rechenausdrucks
case 'q': // Programmende
case '(': case ')': case '+': case '-': case '*': case '/':
{
return Token(ch); // jedes Zeichen ist sein eigenes Token
}
case '.': case '0': case '1': case '2': case '3': case '4':// Zahl als Token
case '5': case '6': case '7': case '8': case '9':
{
cin.putback(ch); // der cin Stream kennt auch ein putback()
double val;
cin >> val;
return Token('9', val);
}
default: error("Token Token_stream::get(), unbekanntes Token!\n");
}
}
#endif /* TOKEN_H */
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
double rechenausdruck(Token_stream &Ts);
double faktor(Token_stream &Ts);
double summand(Token_stream &Ts);
double rechenausdruck(Token_stream &Ts) // "plus" und "minus" behandeln
{
double li = summand(Ts);
Token t = Ts.get();
while (true)
{
switch (t.kind)
{
case '+':
{
li += summand(Ts);
t = Ts.get();
break;
}
case '-':
{
li -= summand(Ts);
t = Ts.get();
break;
}
default:
{
Ts.putback(t);
return li;
}
}
}
}
double summand(Token_stream &Ts) // "mal" und "geteilt durch" behandeln
{
double li = faktor(Ts);
Token t = Ts.get();
while (true)
{
switch (t.kind)
{
case '*':
{
li *= faktor(Ts);
t = Ts.get();
break;
}
case '/':
{
double d = faktor(Ts);
if (d == 0) error("Div. durch 0!\n");
li /= d;
t = Ts.get();
break;
}
default:
{
Ts.putback(t);
return li;
}
}
}
}
double faktor(Token_stream &Ts) // Zahlen und Klammern behandeln
{
Token t = Ts.get();
switch (t.kind)
{
case '(':
{
double d = rechenausdruck(Ts);
t = Ts.get();
if (t.kind != ')') error(") erwartet!\n");
return d;
}
case '9':
{
return t.value;
}
case '+':
{
return faktor(Ts);
}
case '-':
{
return faktor(Ts) * -1;
}
default:
{
error("Faktor erwartet!\n");
}
}
}
#endif /* FUNCTIONS_H */
using namespace std;
#include "MEIN_EIGENER_HEADER.h"
#include "token.h"
#include "functions.h"
int main() {
try {
Token_stream T;
while (cin)
{
Token t = T.get();
while (t.kind == ';')
{
t = T.get();
}
if (t.kind == 'q')
{
return 0;
}
T.putback(t);
cout << "=" << rechenausdruck(T) << endl;
}
return 0;
}
catch (exception &e)
{
cerr << e.what();
return 1;
}
}
c) Erstellen Sie einen Satz von Eingabedaten und die dazu gehörenden, von Ihnen erwarteten Ausgaben zum Testen des Mini-Rechner Programms. Wonach sollten Sie Ausschau halten? Ist Ihre Liste mit Testdaten vollständig? Denken Sie auch an extreme Werte und „unsinnige“ Eingaben. Additon
- 1+1;
- 1++1;
- +1+1;
- ++1++1;
- 0+1;
- 1+0;
Subtraktion
- 1-1;
- 1–1;
- -1-1;
- –1–1;
- 1-0;
- 0-1;
Mixed
- +1-1;
- -1+1;
- +-1+-1;
Multiplikation Plus
- 1*1;
- +1*+1;
- ++1*++1;
- 0*(+1);
Multiplikation Minus
- 1*-1;
- -1*-1;
- –1*–1;
- 0*(-1);
Mixed
- -(+1)*-(+1);
- +(-1)*+(-1);
- -+1*-+1;
- +-1*+-1;
Division
- 1/1;
- +1/+1;
- -1/-1;
- +1/-1;
- -1/+1;
- +(1/1);
- -(1/1);
d) Jedes Programm sollte dem Benutzer irgendeine Form von Hilfe anbieten. Ändern Sie das Mini-Rechner Programm so, dass bei der Eingabe von h oder H einige Anweisungen zur Bedienung ausgegeben werden.
using namespace std;
#include "MEIN_EIGENER_HEADER.h"
#include "token.h"
#include "functions.h"
int main()
{
try{
cout << "Taschenrechner:" << endl;
cout << "Bitte geben Sie die zu berechnenden Terme ein."<< endl;
Token_stream T;
while (cin)
{
Token t = T.get();
while (t.kind == ';')
{
t = T.get();
}
if (t.kind == 'q')
{
return 0;
}
else
{
if (t.kind == 'h')
{
cout << "Hilfe" << endl;
cout << "Rechenoperatoren: '+', '-', '*', '/'" << endl;
cout << "Rechenoperanden: Zahlen, '(', ')'" << endl;
}
else
{
T.putback(t);
cout << "=" << rechenausdruck(T) << endl;
}
}
}
return 0;
}
catch (exception &e)
{
cerr << e.what();
return 1;
}
}
Token Token_stream::get()
{
if (full)
{
full = false;
return buffer;
}
char ch;
cin >> ch;
switch (ch)
{
case 'h': case 'H':
{
return Token('h');
}
case ';': // Ende eines Rechenausdrucks
case 'q': // Programmende
case '(': case ')': case '+': case '-': case '*': case '/':
{
return Token(ch); // jedes Zeichen ist sein eigenes Token
}
case '.': case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9': // Zahl als Token
{
cin.putback(ch); // der cin Stream kennt auch ein putback()
double val;
cin >> val;
return Token('9', val);
}
default:
{
error("Token Token_stream::get(), unbekanntes Token!\n");
}
}
}
e) (Optional) Sie werden feststellen, dass Ein- und Ausgabeprompt
> _ bzw. = 42
des Mini-Rechner Programms sich unter bestimmten Umständen seltsam verhalten. Verbessern Sie das Programm so, dass immer eine korrekte Ein- bzw. Ausgabeaufforderung angezeigt wird. Hinweis: Sie könnten die formatierte Eingabe mit cin >> durch die unformatierte Eingabe mit cin.get() ersetzen und unerwünschte Zeichen selbst filtern.Plus.
Aufgabe 4
a) Lesen Sie über die Standardeingabe Wochentag/Wert-Paare ein,
Beispielsweise: Donnerstag 23 Freitag 56 Donnerstag -3 Dienstag 99
Sammeln Sie für jeden Wochentag die eingegebenen Werte in einem eigenen vector<int> Container. Beenden Sie die Eingabe durch q als Wochentag. Geben Sie die Werte in den sieben Wochentage-Containern aus. Geben Sie die Summe der Werte in jedem Container aus. Ignorieren Sie unzulässige Wochentage wie „Freutag“, aber lassen Sie geläufige Abkürzungen (wie „Fr“) zu. Geben Sie die Anzahl der wegen unzulässigem Tag abgelehnten Werte aus.
#include "MEIN_EIGENER_HEADER.h"
#include <iostream>
#include <vector>
using namespace std;
int isumme (vector<int> &vtage)
{
int result =0;
for (int i=0; i<vtage.size();i++)
{
result = result + vtage[i];
}
return result;
}
int main() {
try {
string stemp = "";
int itemp = 0;
int iilegaldays = 0;
vector<int> vmontag;
vector<int> vdienstag;
vector<int> vmittwoch;
vector<int> vdonnerstag;
vector<int> vfreitag;
vector<int> vsamstag;
vector<int> vsonntag;
while (stemp != "q")
{
cin >> stemp;
if (cin >> itemp)
{
if (stemp == "Montag" || stemp == "Mo")
{
vmontag.push_back(itemp);
}
else
{
if (stemp == "Dienstag" || stemp == "Di")
{
vdienstag.push_back(itemp);
}
else
{
if (stemp == "Mittwoch" || stemp == "Mi")
{
vmittwoch.push_back(itemp);
}
else
{
if (stemp == "Donnerstag" || stemp == "Do")
{
vdonnerstag.push_back(itemp);
}
else
{
if (stemp == "Freitag" || stemp == "Fr")
{
vfreitag.push_back(itemp);
}
else
{
if (stemp == "Samstag" || stemp == "Sa")
{
vsamstag.push_back(itemp);
}
else
{
if (stemp == "Sonntag" || stemp == "So") {
vsonntag.push_back(itemp);
}
else
{
iilegaldays++;
}
}
}
}
}
}
}
}
else
{
cin.clear();
if (cin >> stemp && stemp != "q")
{
error("Ungueltige Eingabe fuer Wochentag oder Wert.");
}
else
{
cout << "'q' wurde als Zahl eingegeben." << endl;
cout << "Fuehre automatische Korrektur durch." << endl;
}
}
}
cout << "Anzahl der falsch eingegebenen Tage: "<<iilegaldays <<endl;
cout << "Montage: "<<isumme(vmontag) <<endl;
cout << "Dienstage: "<<isumme(vdienstag) <<endl;
cout << "Mittwoche: "<<isumme(vmittwoch) <<endl;
cout << "Donnerstage: "<<isumme(vdonnerstag) <<endl;
cout << "Freitage: " <<isumme(vfreitag) <<endl;
cout << "Samstage: " <<isumme(vsamstag) <<endl;
cout << "Sonntage: " <<isumme(vsonntag) <<endl;
return 0;
}
catch (exception &e)
{
cerr << e.what();
return 1;
}
}
b) Definieren Sie nun eine Klasse Name_values, die einen string und ein vector<int> enthält. Statten Sie die Klasse mit einem Konstruktor und mit den erforderlichen Memberfunktionen zur Speicherung von Werten und zur Ausgabe aus. Überarbeiten Sie das Programm aus a) so, dass statt sieben vector Container nur noch ein vector<Name_values> Container verwendet wird.
#include "class.h"
#include "methods.h"
#include "MEIN_EIGENER_HEADER.h"
#include <vector>
using namespace std;
int main() {
try {
vector<name_value> vnamevalues(7);
string strDay;
int ivalue = 0, iilegal = 0;
vnamevalues[0] = name_value("Montag");
vnamevalues[1] = name_value("Dienstag");
vnamevalues[2] = name_value("Mittwoch");
vnamevalues[3] = name_value("Donnerstag");
vnamevalues[4] = name_value("Freitag");
vnamevalues[5] = name_value("Samstag");
vnamevalues[6] = name_value("Sonntag");
while (strDay != "q")
{
cin >> strDay;
if (cin >> ivalue)
{
if (strDay == "Montag" || strDay == "Mo")
{vnamevalues[0].set(ivalue);}
else
{
if (strDay == "Dienstag" || strDay == "Di")
{vnamevalues[1].set(ivalue);}
else
{
if (strDay == "Mittwoch" || strDay == "Mi")
{vnamevalues[2].set(ivalue);}
else
{
if (strDay == "Donnerstag" || strDay == "Do")
{vnamevalues[3].set(ivalue);}
else
{
if (strDay == "Freitag" || strDay == "Fr")
{vnamevalues[4].set(ivalue);}
else
{
if (strDay == "Samstag" || strDay == "Sa")
{vnamevalues[5].set(ivalue);}
else
{
if (strDay == "Sonntag" || strDay == "So")
{vnamevalues[6].set(ivalue);}
else
{iilegal++;}
}
}
}
}
}
}
}
else
{
cin.clear();
if (cin >> strDay && strDay == "q")
{
cout << "Bitte \"q\" nur fuer den ersten Wert eingeben." << endl;
cout << "Fuehre Korrektur durch." << endl;
}
else
{
error("Ungueltige Eingabe fuer den Wert.");
}
}
}
cout << "Sie haben folgende Werte eingegeben: " << endl;
for (int i = 0; i < vnamevalues.size(); i++) //Alle Tage durchlaufen
{cout << vnamevalues[i].get() << ": " << vnamevalues[i].isumme() << endl;}
cout << "Anzahl der falsch eingegebenen Tage: " << iilegal << endl;
return 0; //reguläres Programmende
}
catch (runtime_error &e)
{
cerr << e.what(); //Fehlerausgabe
return 1; //Programmende nach Fehler
}
}
#ifndef METHODS_H
#define METHODS_H
name_value::name_value() : //Standardkonstruktor
sname("Montag"),vvalue() {}
name_value::name_value(string strDay) :
sname(strDay), vvalue() { }
void name_value::set(int ivalue)
{
vvalue.push_back(ivalue);
}
int name_value::size()
{
return vvalue.size();
}
int name_value::isumme()
{
int iergebnis = 0;
for (int i = 0; i < vvalue.size(); i++)
{
iergebnis = iergebnis + vvalue[i];
}
return iergebnis;
}
string name_value::get()
{
return sname;
}
#endif /* METHODS_H */
#ifndef NAME_VALUES_H
#define NAME_VALUES_H
#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
class name_value
{
public:
name_value();
name_value(string strDay);
void set(int);
int size();
int isumme();
string get();
private:
string sname;
vector<int> vvalue;
};
#endif /* NAME_VALUES_H */