3-0.
Compilieren, starten und testen Sie die Programme in diesem Kapitel.
Programm 1 (Durchschnitt):
#include <iomanip>
#include <iostream>
#include <string>
using std::cin; using std::setprecision;
using std::cout; using std::string;
using std::endl; using std::streamsize;
int main() {
// Nach dem Namen fragen und einlesen
cout << "Bitte geben Sie Ihren Namen ein: ";
string name;
cin >> name;
cout << "Hallo, " << name << "!" << endl;
// Nach den Prüfungsnoten fragen und einlesen
cout << "Bitte geben Sie Ihre Vordiplom und Ihre Diplomnote ein: ";
double midterm, final;
cin >> midterm >> final;
// Nach den Noten der Hausarbeiten fragen
cout << "Geben Sie die HA-Noten ein, "
"abgeschlossen mit CTRL + Z:";
// Anzahl und Summe der eingelesenen Noten
int count = 0;
double sum = 0;
// eine Variable, in die eingelesen wird
double x;
// Invariante:
// Wir haben count Noten eingelesen
// sum ist die Summer der Noten
while (cin >> x && x > 0 ) {
++count;
sum += x;
}
// Resultat ausgeben
streamsize prec = cout.precision();
cout << "Ihre Endnote ist " << setprecision(3)
<< 0.2 * midterm + 0.4 * final + 0.4 * sum / count
<< setprecision(prec) << endl;
return 0;
}
Programm 2 (Median):
#include <iomanip>
#ifndef __GNUC__
#include <ios>
#endif
#include <iostream>
#include <string>
#include <vector>
using std::cin; using std::setprecision;
using std::cout; using std::string;
using std::endl; using std::streamsize;
using std::vector;
int main() {
// Nach dem Namen fragen und einlesen
cout << "Bitte geben Sie Ihren Namen ein: ";
string name;
cin >> name;
cout << "Hallo, " << name << "!" << endl;
// Nach den Prüfungsnoten fragen und einlesen
cout << "Bitte geben Sie Ihre Vordiplom und Ihre Diplomnote ein: ";
double midterm, final;
cin >> midterm >> final;
// Nach den Noten der Hausarbeiten fragen
cout << "Geben Sie die HA-Noten ein, "
"abgeschlossen mit CTRL + Z:";
// Anzahl und Summe der eingelesenen Noten
vector<double> noten;
// eine Variable, in die eingelesen wird
double x;
// Invariante:
// noten enthält alle HA-Noten
while (cin >> x && x > 0 ) {
noten.push_back(x);
}
// Eingabe prüfen
typedef vector<double>::size_type vec_sz;
vec_sz groesse = noten.size();
if (groesse == 0) {
cout << endl << "Sie müssen Noten eingeben";
return 1;
}
// Median berechnen
sort(noten.begin(), noten.end());
vec_sz mitte = groesse / 2;
double median;
median = groesse % 2 == 0 ? (noten[mitte]
+noten[mitte-1])/2
: noten[mitte];
// Resultat ausgeben
streamsize prec = cout.precision();
cout << "Ihre Endnote ist " << setprecision(3)
<< 0.2 * midterm + 0.4 * final + 0.4 * median
<< setprecision(prec) << endl;
return 0;
}
3-3.
Schreiben Sie ein Programm, das zählt, wie oft jedes einzelne Wort in seiner Eingabe vorkommt.
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main() {
// Nach dem Namen fragen und einlesen
cout << "Bitte geben Sie Ihre Wörter ein: \n";
vector<string> woerter;
vector<unsigned int> anzahl;
string eingabe;
// Invariante: Eingaben werden im Vector woerter gespeichert
while (cin >> eingabe) {
unsigned int x = 0;
bool gefunden = false;
// Invariante: Es wurden x Elemente bearbeitet
while (x != woerter.size()) {
// Wurde das Wort bereits eingegeben?
if (woerter[x] == eingabe) {
// Zähler erhöhen
anzahl[x] = anzahl[x] + 1;
// Flag setzen
gefunden = true;
}
++x;
}
// Wenn das Wort zum ersten Mal eingeben wurde
if (!gefunden) {
// Wort und Zähler speichern
woerter.push_back(eingabe);
anzahl.push_back(1);
}
}
unsigned int x = 0;
// Invariante: Es wurden x Elemente bearbeitet
while (x != woerter.size()) {
cout << "Das Wort \"" << woerter[x] << "\" wurde " << anzahl[x] << "x eingegeben " << endl;
++x;
}
return 0;
}