Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: xservice en 16 Febrero 2014, 02:58 am



Título: Problemas con programa c++
Publicado por: xservice en 16 Febrero 2014, 02:58 am
Necesito un poco de ayuda tengo el siguiente programa que un AFD(Automata Finito Deterministico) que verifica si una cadena es valida.

Se introduce la información desde la terminal.pero necesito que la cargue la información desde un fichero, excepto la validacion de cadenas esas si tienen que ser introducidas desde la terminal.

Mi manejo de programas cargando información desde ficheros es nula, por eso necesito su ayuda, si alguien sabe como hacerlo se lo agradecería.

Código:
#include <cstdlib>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
    int n, na,ne,qi,nq,nqf,opc;
    string palabra;
   
    cout<<"Ingrese el numero de simbolos del Alfabeto: ";
    cin>>na;
   
    char alfabeto[na];
   
    for(int i=0;i<na;i++){
        cout<<"Ingrese el simbolo "<<i+1<<" : ";
        cin>>alfabeto[i];
    }
   
    cout<<"Ingrese el numero de estados: ";
    cin>>nq;
   
    cout<<"Ingrese el numero del estado inicial: ";
    cin>>qi;
   
    cout<<"Ingrese el numero de estados finales: ";
    cin>>nqf;
   
    int qf[nqf];
   
    for(int i=0;i<nqf;i++){
        cout<<"Ingrese el "<<i+1<<" estado final: ";
        cin>>qf[i];
    }
   
    int transiciones[nq][na];
   
    for(int i=0;i<nq;i++){
        for(int j=0;j<na;j++){
            cout<<"d(q"<<i<<","<<alfabeto[j]<<"):";
            cin>>transiciones[i][j];
        }
    }
    // Validacion de Cadenas
inicio:
    cout<<"Ingrese una cadena:\n";
    cin>>palabra;
   
    n = palabra.length();
    int ea = qi;
    bool band=true;
   
    for(int i=0;i<n;i++){
        for(int j=0;j<na;j++){
            if(palabra[i]==alfabeto[j]){
                cout<<"d(q"<<ea<<","<<palabra[i]<<")= ";
                ea = transiciones[ea][j];
                cout<<"q"<<ea<<endl;
                if (ea==-1){
                    cout<<"Palabra rechazada"<<endl;
                    goto inicio;
                }
            }
        }
    }
   
    for(int i=0;i<nqf;i++){
        if(ea==qf[i]){
            cout<<"Palabra aceptada.\n"<<endl;
            cout<<"1.Ingresar Otra Palabra\n2.Salir\n"<<endl;
            cin>>opc;
            if(opc==1){
                goto inicio;
            }
            else{
                goto fin;
            }
    }
            cout<<"Palabra rechazada\n"<<endl;
        cout<<"1.Ingresar Otra Palabra\n2.Salir\n"<<endl;
            cin>>opc;
        if(opc==1){
             goto inicio;
        }

        else{
            goto fin;
        }
   
        }
fin: return 0;
}