Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string.h>
- using namespace std;
- #define max 100002
- int poz(char ch, char sir[max]){
- int i;
- for(i=0; i<strlen(sir); i++)
- if(sir[i] == ch) return i;
- return -1;
- }
- int finala(int nrFin, int index, int v[max]){
- int i;
- for(i=0; i<nrFin; i++)
- if(v[i] == index) return 1;
- return 0;
- }
- int AFD( char cuv[max], char alphab[max], int init, int nrFin, int *v, int **mat ){
- int i, index;
- char lit;
- index = init;
- for(i=0; i<strlen(cuv); i++){
- lit = cuv[i];
- if(strchr(cuv, lit) == 0) return 0;
- if(mat[index][poz(lit, alphab)] != -1){
- index = mat[index][poz(lit, alphab)];
- if(finala(nrFin, index, v) == 1 && cuv[i+1] == '\0') return 1;
- }
- else return 0;
- }
- return 0;
- }
- int main() {
- int nrStari, init, nrFin, nrTranz, nrCuv, nrCol;
- char alphab[max];
- ofstream g("cuvinte.txt");
- ifstream f("fisier.txt");
- f>>nrStari>>init>>nrFin;
- // cout<<nrStari<<init<<nrFin;
- int v[nrFin], i, j;
- for(i=0; i<nrFin; i++) f>>v[i];
- f>>alphab;
- // cout<<alphab;
- f>>nrTranz;
- nrCol = strlen(alphab);
- // cout<<nrCol;
- int mat[nrStari][nrCol];
- for(i=0; i<nrStari; i++)
- for(j=0; j<nrCol; j++)
- mat[i][j] = -1;
- for(i=0; i<nrTranz; i++){
- int x, y;
- char c;
- f>>x>>c>>y;
- mat[x][poz(c, alphab)] = y;
- }
- f>>nrCuv;
- for(i=0; i<nrCuv; i++){
- char cuv[max];
- f>>cuv;
- //lit = cuv[0];
- if( AFD(cuv, alphab, init, nrFin, v, mat) == 1) g<<"Cuvantul "<<cuv<<" este acceptat!\n";
- else g<<"Cuvantul "<<cuv<<" nu este acceptat!\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement