Moore- Automate
-
Hallo Leute...
ich habe folgendes Problem. Ich soll muss eine Moore- Automat programmieren mit vorgegebenen Header und Quelldatei.
Leider sehe ich in der der vorgegebene Sache überhaupt nicht durch.
Eventuell kann mir ja jemand voneuch helfen.DANKE.
Folgende Vorgaben:
Es werden Ihnen Klassen zur Konstruktion von Automaten
vorgegeben (automat.h, automat.cpp).Von einer ausgewählten Basisklasse ist Ihr Automat abzuleiten
(mittels Vererbung).Die Methode f()ist entsprechend der Anforderungen
zu überladen.
Das „Zustandsspiel“ Ihres Automaten ist im Hauptprogramm
nachzubilden. Die Ausgabe ist in eine Datei zu schreiben.Aufgabe:
Ein Moore-Automat erbt aus den Basisklassen:
void init();
Diese Methode ist durch Sie vor der ersten Eingabe und dem
ersten Zeitschritt auszuführen.
int zeitschritt(char e[]);
hier ist ein 2-Zeichen-Array als Eingabevektor E0, E1 zu übergeben,
den Sie vorher entsprechend der für Sie vorgegebenen Eingabe-
sequenz belegen sollen. Die Methode gibt 1 zurück, wenn der
Automat bereits initialisiert wurde, sonst 0.
int ausgabe(char a[]);
hier ist ebenfalls ein 2-Zeichen-Array als Ausgabevektor A0, A1 zu
übergeben. Aus diesem Array können Sie die Ausgabe des
Automaten entnehmen und weiterverarbeiten. Die Methode gibt 1
zurück, wenn der Automat bereits initialisiert wurde, sonst 0.[code="cpp"]:
Header:
class automat {
private:
bool initialized;
protected:
char E[2], Z[2], Z_neu[2], A[2];
virtual void f()=0; // Zustandsuebergangsfunktion f (E,Z) -> Z_neu;
virtual void g()=0; // Ausgabefunktion g(Z) -> A
virtual void a()=0; // Setzen des Anfangszustands a() -> Z
public:
automat() ;
void init();
bool is_initialized() const;
};class moore_automat: public automat {
public:
moore_automat();
int zeitschritt(char e[]);
int ausgabe(char a[]);
};class mealy_automat: public automat {
public:
mealy_automat();
int zeitschritt( char e[], char a[]);};
automat.cpp:
#include <memory.h>
#include "automat.h"// --- Methodenimplementation für KLasse automat ---
automat::automat()
{
initialized=false;
}
void automat::init()
{
a();
initialized=true;
}
bool automat::is_initialized() const
{
return initialized;
}moore_automat::moore_automat(): automat() { }
int moore_automat::zeitschritt(char e[])
{
if (!is_initialized())
return 0;
memcpy(E,e,sizeof(E));
f();
memcpy(Z, Z_neu, sizeof(Z));
return 1;
}
int moore_automat::ausgabe(char a[])
{
if (!is_initialized())
return 0;
g();
memcpy(a,A,sizeof(A));
return 1;
}mealy_automat::mealy_automat(): automat() { }
int mealy_automat::zeitschritt( char e[], char a[])
{
if (!is_initialized())
return 0;memcpy(E,e,sizeof(E));
g();
memcpy(a,A,sizeof(A));
f();
memcpy(Z, Z_neu, sizeof(Z));
return 1;
}Vorlage.cpp:
#include <fstream>
using namespace std;#include "automat.h"
const int n_schritte=10;
char eingabe_A[10][2] = { {0,1},{0,1},{0,1},{0,1},{0,1},{0,1},{0,1},{0,1},{0,1},{1,1}};// Definieren Sie hier Ihre Klasse als Spezialisierung von moore_automat
// oder mealy_automat// Überschreiben Sie die Methoden f(), g(), und a() ensprechend der für Sie
// personalisierten Varianteint main()
{cout << "Nachbildung eines Automaten" << endl;
// Instanziieren Sie hier Ihre Automaten-Klasse
// Rufen Sie die Methode init() für Ihr Objekt auf
// Simulieren Sie 10 Schritte bei aufeinanderfolgender Eingabe von Vektoren (E[1], E[0])),
// die Sie aus eingabe_A, eingabe_B oder eingabe_C entnehmen.
// Die Eingabedatei wählen Sie bitte entsprechend Ihrer Aufgabenvariante// Schreiben Sie die Ausgabe Ihres Automaten in eine Textdatei, die für jeden Schritt eine Zeile
// enthalten soll.return 0;
}Wäre echt richtig cool, wenn mir das jemand erklären könnte.
Ich she echt überhaupt kein STICH...Danke.
-
Dieser Thread wurde von Moderator/in Jester aus dem Forum Mathematik und Physik in das Forum C++ (alle ISO-Standards) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
es wäre gut, wenn du auf die korrekte Verwendung von Codetags achten würdest. Durch den "Vorschau"-Button kann man das gut überprüfen. Hier ist auch hilfreich, jede einzelne Datei in einen eigenen Block zu packen.
Das Wichtigste ist aber: was ist deine Frage? Du sagst, du blickst nicht durch, wir wissen aber nichts über deinen Kenntnissstand. So kann dir leider keiner sinnvoll helfen. Was weißt du über Automaten? Wie gut kannst du (C++) programmieren? Die Vorgabe zeigt leider, dass sich dein Lehrer auch nicht gerade auskennt bzw. keine Lust hat es richtig zu machen.