Interprete

Iniciado por mapers, 23 Marzo 2011, 07:57 AM

0 Miembros y 1 Visitante están viendo este tema.

mapers

bueanas señores del foro estoy empezando a hacer un pequeño interprete ........lo amlo esque no se porque se salta de la sentencia :
if(frase[patron]=='e' && frase[patron+1]=='l' && frase[patron+2]=='s' && frase[patron+3]=='e' )

justo cunando ingreso 1aelse;
me deve de salir en  pantalla:

identidicador entero else

else e if son palabras reservdas que  de a cuerdo al analisis que le doy me deve ingresar a la comparacion pero no se porqeu no entra en ese ejemplo me sale

identidicador / entero /identificador

no entiendo orque a que se deve a ver denle una ojeada
Código (cpp) [Seleccionar]

#include <iostream>
#include <cstring>
using namespace std;
int patron=0;
int i=0,j=0,factor=0;
char frase[100];
//------------------------------------------------------//
void entero();
void identificador();
void entero_identificador();
//------------------------------------------------------//
int main()
{
 
cout<<"ingrese frase "<<endl;
cin>>frase;
int n=strlen(frase);
cout<<endl;
while(n!= patron)
    {
           
       if(frase[patron]==';')
       {
          if(i!=0)
          {
           cout<<"entero "<<"/";
           }
           if(j!=0)
           {
           cout<<"identificador"<<"/";
           }
         
        cin.ignore();
    cin.get ();
           
       }
if(frase[patron]=='i' && frase[patron+1]=='f')
{
                 if(j!=0)
                {
                 cout<<"identificador"<<"/";
                 i=0;
                 j=0;
                 }
                   
                if(i!=0)
                {
                 cout<<"entero"<<"/";
                 i=0;
                 j=0;
                 }               
cout<<"if"<<" /";
patron=patron+2;
                  continue;
}
       
if(frase[patron]=='e' && frase[patron+1]=='l' && frase[patron+2]=='s' && frase[patron+3]=='e' )
{   
                if(j!=0)
                {
                 cout<<"identificador "<<"/";
                 i=0;
                 j=0;
                 }
                   
                if(i!=0)
                {
                 cout<<"entero "<<"/";
                 i=0;
                 j=0;
                 }
                                         
cout<<"else"<<" /";
patron=patron+4;
continue;
                   
}

if(isdigit(frase[patron])!=0)
{
identificador();
patron++;
}
if(isdigit(frase[patron])==0)
{
entero();
patron++;
}

   
}

}

//------------------------------------------------------//
//------------------------------------------------------//

void identificador()
{
if(j==0)
{
i++;
}

if(j!=0)
{
cout<<"identificador "<<"/";
j=0;
i++;
    }
   

}

//------------------------------------------------------//
//------------------------------------------------------//
void entero()
{
if(i==0)
{
j++;
}
if(i!=0)
{
cout<<"entero "<<"/";
i=0;
j++;
}
}