Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

52 строки
1.5KB

  1. // Eine Klasse, die das Programm einer
  2. // Turingmaschine realisiert.
  3. // Zustaende sind vom Typ int
  4. // Bandalphabet ist der Typ char
  5. // Anfangszustand ist Zustand in der ersten Zeile
  6. // Endzustand ist Zustand in der letzten Zeile
  7. class Programm {
  8. public:
  9. // Symbole fuer links/rechts
  10. enum R {links,rechts};
  11. // Erzeuge leeres Programm
  12. Programm ();
  13. // definiere Zustandsuebergaenge
  14. // Mit Angabe des Endzustandes ist die
  15. // Programmierphase beendet
  16. void zeile (int q_ein, char s_ein,
  17. char s_aus, R richt, int q_aus);
  18. void zeile (int endzustand);
  19. // lese Zustandsuebergang in Abhaengigkeit
  20. // von akt. Zustand und gelesenem Symbol
  21. char Ausgabe (int zustand, char symbol);
  22. R Richtung (int zustand, char symbol);
  23. int Folgezustand (int zustand, char symbol);
  24. // Welcher Zustand ist Anfangszustand
  25. int Anfangszustand ();
  26. // Welcher Zustand ist Endzustand
  27. int Endzustand ();
  28. private:
  29. // Finde die Zeile zu geg. Zustand/Symbol
  30. // Liefere true, falls so eine Zeile gefunden
  31. // wird, sonst false
  32. bool FindeZeile(int zustand, char symbol);
  33. enum {N=1000}; // maximale Anzahl Uebergaenge
  34. int zeilen; // Anzahl Zeilen in Tabelle
  35. bool fertig; // Programmierphase beendet
  36. int Qaktuell[N]; // Eingabezustand
  37. char eingabe[N]; // Eingabesymbol
  38. char ausgabe[N]; // Ausgabesymbol
  39. R richtung[N]; // Ausgaberichtung
  40. int Qfolge[N]; // Folgezustand
  41. int letztesQ; // Merke Eingabe und Zeilen-
  42. int letzteEingabe;// nummer des letzten Zu-
  43. int letzteZeile; // griffes.
  44. } ;