// Konstruiere die TM mit Programm und Band TM::TM (Programm& p, Band& b) : prog(p), band(b) { q=p.Anfangszustand(); } // einen Schritt machen void TM::Schritt () { // lese Bandsymbol char s = band.lese(); // schreibe Band if (prog.Richtung(q,s)==Programm::links) band.schreibe_links(prog.Ausgabe(q,s)); else band.schreibe_rechts(prog.Ausgabe(q,s)); // bestimme Folgezustand q = prog.Folgezustand(q,s); } // Ist Endzustand erreicht? bool TM::Endzustand () { if (q==prog.Endzustand()) return true; else return false; }