Inhalt:
Uebung:
Speichern Sie die Klasse in der Datei "name.h". Schreiben Sie ein Test-Programm name-test.cc, das mehrere Namen anlegt und mit print() ausgibt sowie das passende Makefile um mit "make name-test" zu compilieren:
% cat name.h
class Name {
// Hier Klasse Name einfuegen
};
% cat name-test.cc
#include <iostream>
#include "name.h"
int main(void) {
Name hubert;
Name hans("Hans");
hubert.print();
hans.print();
cout << "[" << hubert << "]" << endl;
cout << "[" << hans << "]" << endl;
return 0;
}
% make name-test
...
% ./name-test
Hans[]
[Hans]
%
Speichern Sie die Klasse in in der Datei "liste.h". Schreiben Sie die Klasse mit dem Programm liste-test.cc, das zwei Listen anlegt, eine fuer Vornamen und eine fuer Nachnamen. Das Programm soll abwechselnd Vornamen und Nachnamen von Tastatur einlesen, und bei erreichen des Dateiendes erst alle Vornamen, dann alle Nachnamen ausgibt:
% cat liste-test.cc
#include <iostream>
#include "liste.h"
using namespace std;
int main(void)
{
char name[80];
Liste vn, nn;
while (!cin.eof()) {
cout << "Vorname eingeben: ";
cin >> name;
if (cin.eof()) break;
vn.einfuegen(name); // impliziter Konstruktoraufruf: Name(char*)
cout << "Nachname eingeben: ";
cin >> name;
if (cin.eof()) break;
nn.einfuegen(name);
}
cout << endl;
cout << endl;
cout << "Vornamen: " << vn << endl;
cout << "Nachnamen: " << nn << endl;
return 0;
}
% make liste-test
...
% ./liste-test
Vorname eingeben: Hubert
Nachname eingeben: Feyrer
Vorname eingeben: Angela
Nachname eingeben: Merkel
Vorname eingeben: Bill
Nachname eingeben: Gates
Vorname eingeben: ^D
Vornamen: Bill Angela Hubert
Nachnamen: Gates Merkel Feyrer
%
Schreiben Sie ein Testprogramm stack-test.cc, das einen Stack anlegt. Das Programm soll Namen von Tastatur einlesen, und diese auf den Stack legen. Bei erreichen des Dateiendes werden alle Namen auf dem Stack ausgegeben:
% cat stack-test.cc
#include <iostream>
#include "name.h"
#include "stack.h"
int main(void)
{
char name[80];
Stack s;
while (!cin.eof()) {
cin >> name;
if (cin.eof()) break;
s.push(name);
}
cout << "Stack: " << s << " |" << endl;
while(!s.istLeer()) {
Name n = s.pop();
cout << "> " << n << endl;
}
return 0;
}
% make stack-test
...
% ./stack-test
foo
bar
baz
^D
Stack: baz bar foo |
> baz
> bar
> foo
%