Programación General > C/C++

 Ruego su apollo con este codigo

(1/3) > >>

caballo:
Hola, tengo que entregar un scanner sobre un autamata en C++, el problema por el cual estoy recurriendo a ustedes es el siguiente, quiero decirle a C++ atraves de un switch que elija del todas las letras del abcedario la coa rorresponda cuando lea el automata este es parte del codigo que estoy utilizando


--- Citar ---case 'a' ... 'z':         /* es aqui donde no me reconoce poniendolo de esta manera y no se porque no lo reconoce ya que el ingeniero nos dio un ejemplo y a el de el si corre en Dev C++ pero el lo quiere en Borland, estoy usando Borland 5.02.
Espero su amable ayuda*/

                                  agregarLexema(lexema,z);
                                  z==fgetc(arch);
                                  estado=1;
                                  token=comando;
                             break;
                             case '(':
                             case ',':
                             case ')':
                                  agregarLexema(lexema,z);
                                  estado=2;
                                  switch(z){
                                       case '(':
                                            token=parA;
                                       break;
                                       case ',':
                                            token=coma;
                                       break;
                                       case ')':
                                            token=parC;
                                       break;
                                  };
                                  z==fgetc(arch);
                                  break;
--- Fin de la cita ---

alb:
Holà,
No es possible utilizar un case VAL_1 ... VAL_Ultimo. Debes o separarlo en tanto casos :

--- Código: C++ ---case 'a':case 'b':case 'c':etc... pero est bastande fastidioso. Puedes utilizar std::isalpha de <cctype> (http://www.cplusplus.com/reference/clibrary/cctype/) que salé differente de 0 si le das una lettra ('a' o 'A') :

--- Código: C++ ---if(std::isalpha(letra)!=0){   // do_it}else{// letra no es ['a'-'z'] ni ['A'-'Z']} 

m0skit0:
En su caso creo que islower es más adecuado ya que sólo busca las letras minúsculas según su ejemplo.

Saludos

alb:

--- Cita de: "m0skit0" ---En su caso creo que islower es más adecuado ya que sólo busca las letras minúsculas según su ejemplo.
--- Fin de la cita ---
Si. La idea es de mirar en cctype cual es la que le arregle lo mas.

caballo:
Gracias por sus respuestas, la opcion de cctype es para diferenciar entre mayusculas y minusculas pero en realidad lo que necesitaba saber era si se podia expresar en borland el caracter o numero inicial y luego el final asi
--- Citar ---'a'...'z'
--- Fin de la cita ---
ó
--- Citar ---0...9
--- Fin de la cita ---
pero en borland no se puede, en donde si se puede es en Dev C++ pero el ingeniero lo quiere en Borland asi que tube que espresar un case por caracter
 
--- Citar ---case 'a':
case 'b':
case 'c':
case 'd':
etc.
--- Fin de la cita ---

Gracias por sus respuestas, les cuento que ya tengo la mitad del proyecto que es un scanner y me falta programar tres automatas para que me dibuje objetos en pantalla

--- Citar ---Linea(x,y,x2,y2)
rectangle(x,y,x2,y2)
circle(x,y,r)
 
--- Fin de la cita ---

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa