004
28.03.2005, 22:12 Uhr
rejo
|
Hallo Leute! Meld mich mal wieder
Ich hab mir einiges überlegt und angefangen diesen code zu schreiben ... der irgendwie nicht so funktioniert wie ich will ^^
Naja wäre nett wenn ihr mir paar Tipps geben könntet
C++: |
#ifndef _AUTOMAT_ #define _AUTOMAT_ #include <iostream> #define ZUSTAND 15 #define NONTSYM 5
struct NEA { int zustand[ZUSTAND]; };
struct DEA { int zustand; };
struct TMP { int zustand[ZUSTAND]; };
struct Array { int Tab[ZUSTAND]; };
class Automat { private:
struct NEA NEAtab[ZUSTAND][NONTSYM]; struct DEA DEAtab[ZUSTAND][NONTSYM]; struct TMP TMPtab[ZUSTAND][NONTSYM];
int NEAende[ZUSTAND]; int DEAende[ZUSTAND]; int TMPende[ZUSTAND];
public:
Automat(void); ~Automat(void) { }
void setNEAtab(struct NEA[ZUSTAND][NONTSYM], int[ZUSTAND]); struct NEA getNEAtab(void);
struct DEA getDEAtab(void);
friend std::ostream& operator<<(std::ostream&, const Automat&); friend std::istream& operator>>(std::istream&, Automat&);
bool determinisieren(void); struct Array nimmZustand(int, int);
bool syntaxcheck(char*);
void show(void); };
#endif
|
C++: |
#include "Automat.h" #include <iostream>
using namespace std;
Automat::Automat(void) { for(int m = 0; m < ZUSTAND; m++) { NEAende[m]= DEAende[m] = TMPende[m] = -1;
for(int n = 0; n < NONTSYM; n++) { for(int o = 0; o < ZUSTAND; o++) { DEAtab[m][n].zustand = -1; TMPtab[m][n].zustand[o] = -1; NEAtab[m][n].zustand[o] = -1; } } } }
void Automat::setNEAtab(struct NEA tab[ZUSTAND][NONTSYM], int Nende[ZUSTAND]) { for(int m = 0; m < ZUSTAND; m++) { NEAende[m] = Nende[m]; DEAende[m] = TMPende[m] = -1;
for(int n = 0; n < NONTSYM; n++) { for(int o = 0; o < ZUSTAND; o++) { DEAtab[m][n].zustand = -1; TMPtab[m][n].zustand[o] = -1; NEAtab[m][n].zustand[o] = tab[m][n].zustand[o]; } } } }
struct NEA Automat::getNEAtab(void) { return NEAtab[ZUSTAND][NONTSYM]; }
struct DEA Automat::getDEAtab(void) { return DEAtab[ZUSTAND][NONTSYM]; }
ostream& operator<<(ostream &o, const Automat &a) { // Ausgabe
return o; }
istream& operator>>(istream &i, Automat &a) { // Eingabe
return i; }
bool Automat::determinisieren(void) { for(int i = 0; i < NONTSYM; i++) { for(int j = 0; j < ZUSTAND; j++) { TMPtab[0][i].zustand[j] = NEAtab[0][i].zustand[j]; } }
Array a;
for(int m = 0; m < ZUSTAND; m++) { for(int n = 0; n < NONTSYM; n++) { a = nimmZustand(m,n); memcpy(TMPtab[m+1][n].zustand, a.Tab, ZUSTAND); } }
return false; }
struct Array Automat::nimmZustand(int x, int y) { Array c; int counter = 0;
for(int b = 0; b < ZUSTAND; b++) c.Tab[b] = -1;
for(int j = 0; j < ZUSTAND; j++) { for(int k = 0; k < ZUSTAND; k++) { if(k == TMPtab[x][y].zustand[j]) { for(int a = 0; a < ZUSTAND && NEAtab[k][y].zustand[a] != -1; a++) { c.Tab[counter] = NEAtab[k][y].zustand[a]; counter++; } } } } return c; }
bool Automat::syntaxcheck(char *wort) { // Syntaxcheck
return false; }
void Automat::show(void) { for(int x = 0; x < ZUSTAND; x++) { for(int y = 0; y < NONTSYM; y++) { for(int z = 0; z < ZUSTAND; z++) { if(TMPtab[x][y].zustand[z] != -1) cout << TMPtab[x][y].zustand[z]; }
cout << " "; } cout << "\n"; } }
|
C++: |
#include "Automat.h"
int main(void) { struct NEA Tabelle[ZUSTAND][NONTSYM]; int N_ende[ZUSTAND]; for(int i = 0; i < ZUSTAND; i++) for(int x = 0; x < NONTSYM; x++) for(int y = 0; y < ZUSTAND; y++) Tabelle[i][x].zustand[y] = -1;
Tabelle[0][0].zustand[0] = 0; Tabelle[0][0].zustand[1] = 1; Tabelle[0][1].zustand[0] = 0;
Tabelle[1][0].zustand[0] = 2; Tabelle[2][0].zustand[0] = 3;
Tabelle[3][1].zustand[0] = 5;
Tabelle[4][0].zustand[0] = 4; Tabelle[4][0].zustand[1] = 5;
Tabelle[4][1].zustand[0] = 5;
Tabelle[5][0].zustand[0] = 6;
N_ende[0] = 3; N_ende[1] = 6;
Automat a;
a.setNEAtab(Tabelle,N_ende); a.determinisieren(); a.show(); return 0; }
|
Ich denk mal ihr seht eh schon das ich noch garnicht am ende des quellcodes bin... Also bitte postet mir paar Tipps
lg rejo |