• Miércoles 1 de Mayo de 2024, 21:14

Autor Tema:  Simple Case Error  (Leído 1681 veces)

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Simple Case Error
« en: Lunes 29 de Diciembre de 2008, 19:32 »
0
Hola gente!

estoy haciendo un programa con una sentencia switch muy extensa, y me encontre con un error bastante simple que no eh podido eliminar.

el codigo reducido al problema es este (esta hecho para wingdows):

Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. int main(void){
  6.     char caracter;
  7.    
  8.     printf("%dn",VK_NUMPAD0);
  9.     printf("%dnn",VK_NUMPAD9);
  10.  
  11.     printf("%dn",'1');
  12.     printf("%dnn",'9');
  13.  
  14.     printf("%dn",'A');
  15.     printf("%dnn",'Z');
  16.  
  17.     for(caracter = 0; caracter < 256; caracter++){
  18.             switch(caracter){
  19.                 case 'A'||'B'||'C'||'D'||'E'||'F'||
  20.                      'G'||'H'||'I'||'J'||'K'||'L'||
  21.                      'M'||'N'||'O'||'P'||'Q'||'R'||
  22.                      'S'||'T'||'U'||'V'||'W'||'X'||
  23.                      'Y'||'Z'||
  24.  
  25.                      '1'||'2'||'3'||'4'||'5'||
  26.                      '6'||'7'||'8'||'9'||'0':
  27.                             printf("aguante...n");
  28.  
  29.                     break;  
  30.                 case VK_NUMPAD0||VK_NUMPAD1||VK_NUMPAD2||VK_NUMPAD3||VK_NUMPAD4||
  31.                      VK_NUMPAD5||VK_NUMPAD6||VK_NUMPAD7||VK_NUMPAD8||VK_NUMPAD9:                    
  32.                         printf("..el metal!!n");                                      
  33.                     break;
  34.             }
  35.     }
  36.  
  37.     return 0;
  38. }
  39.  

el error q obtengo es el de que el valor case '1' ya ha sido utilizado.
Lo extraño , o capaz mi mal interpretacion del error, es que ninguna constante usada en los cases es 1, imprimi sus valores al comienzo del programa y demuestra que no hay valores repetidos.

sera que estoy utilizando mal la sentencia switch case?


saludos!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Simple Case Error
« Respuesta #1 en: Lunes 5 de Enero de 2009, 09:24 »
0
Creo que tu problema radica en que no tienes en cuenta el código scan del teclado sino simplemente el código ASCII, con lo que '1' y VK_NUMPAD1 (y todos los números) tienen el mismo código ASCII puesto que es el mismo carácter.

Salud

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Simple Case Error
« Respuesta #2 en: Lunes 5 de Enero de 2009, 14:54 »
0
a q te refieres con el codigo scan del teclado?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Simple Case Error
« Respuesta #3 en: Lunes 5 de Enero de 2009, 15:09 »
0
El código scan del teclado identifica la posición de la tecla, independientemente del lenguaje, simplemente reporta qué tecla fue pulsada. Luego ésta se convierte en un código ASCII o Unicode según el lenguaje y el sistema operativo.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Simple Case Error
« Respuesta #4 en: Lunes 5 de Enero de 2009, 15:44 »
0
:o!

eso me es muy util  :beer:


estoy buscando documentacion sobre eso, conoces alguna pagina que tenga info acerca de eso?

gracias!

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: Simple Case Error
« Respuesta #5 en: Lunes 5 de Enero de 2009, 15:47 »
0

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Simple Case Error
« Respuesta #6 en: Lunes 5 de Enero de 2009, 15:48 »
0
Pues con buscar "scan codes" en Google lo tienes listo

http://www.google.es/search?client=fire ... con+Google