Einsendung:

Lösungsvorschlag

Datei "main.cpp":

#include"Vektor.h"
#include<iostream>

void main()
{
   const int Groesse = 100;
   Vector<bool> Knast(Groesse);
   // Index faengt bei 0 an, Beschriftung bei 1
   cout << "Es ist Morgens, alle Tueren sind geschlossen" << endl;
   
   for (int i = 1; i <= Groesse; i++)
   {
      //Tuer Nr. i ist zu
      Knast[i-1]= true;  
   }
   cout << "Die Waerter kommen!"<< endl;
   for (i = 1; i <= Groesse; i++)
   {
      // bei dem i. Waerter wird jede ite Tuer geaendert
      for (int j = i; j <= Groesse; j += i)
      {
         // aus true wird false, aus false wird true
         if (Knast[j-1]==true) Knast[j-1]=false;
         else Knast[j-1]=true;
      }
   }
   // Ausgabe
   for (i = 1; i <= Groesse; i++)
   {
      cout << "Tuer Nr " << i << ": ";
      if (Knast[i-1]) cout << "zu,"else cout << "offen,";
      cout << endl;
   }
   
}

Da habe ich nur eine Kleinigkeit auszusetzen: Schreiben Sie Konstanten nur in Großbuchstaben.

   const int GROESSE = 100;

Das Programm würde noch ein wenig einfacher werden, wenn der Vector von 1 bis 100 laufen würde, statt wie hier von 0 bis 99. Die schöne Lösung dazu wäre eine Klasse VectorBase1, die im Array-Zugriffs-Operator (operator[]) immer eine 1 abzieht. Hier schlage ich eher die nicht so schöne Lösung vor, daß der Vector einfach 101 Elemente hat, und das Element bei Index 0 wird nicht verwendet wird.



Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00