Adrian Dymorz

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