Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 13 Diciembre 2016, 21:57 pm



Título: No me sale un simple do - while T_T
Publicado por: palacio29 en 13 Diciembre 2016, 21:57 pm
Hola

Tengo un ejercicio en el cual tengo que validar el ingreso de un caracter permitiendo que solo guarde letras mayusculas o el asterisco.
Lo hago y solo valida el asterisco y si pongo mayus o minus o cualquier otro caracter sigue pidiendo.
Código
  1. int main()
  2. {
  3. char car;
  4.  
  5. do
  6. {
  7.    printf("Ingrese un caracter: \n");
  8.    car=getche();
  9.  
  10. }
  11. while((car<'A' && car>'Z') || car!='*');
  12.  
  13. printf("\nLa letra ingreada es %c",car);
  14.  
  15.    return 0;
  16. }
  17.  

Basicamente es eso, en las condiciones del while la estoy pifiando y no entiendo.


Título: Re: No me sale un simple do - while T_T
Publicado por: MAFUS en 13 Diciembre 2016, 22:41 pm
car no puede ser nunca menor a A y mayor a Z al mismo tiempo, es como decir que un número es menor a 0 y mayor a 10 al mismo tiempo. Eso está mal.


Título: Re: No me sale un simple do - while T_T
Publicado por: palacio29 en 13 Diciembre 2016, 23:09 pm
car no puede ser nunca menor a A y mayor a Z al mismo tiempo, es como decir que un número es menor a 0 y mayor a 10 al mismo tiempo. Eso está mal.

Le puse un || en esa parte y ahora no me acepta ningun caracter

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. int main()
  5. {
  6. char car;
  7.  
  8. do
  9. {
  10.    printf("Ingrese un caracter: \n");
  11.    car=getche();
  12.  
  13. }
  14. while((car<'A' || car>'Z') || car!='*');
  15.  
  16. printf("\nLa letra ingreada es %c",car);
  17.  
  18.    return 0;
  19. }
  20.  


Título: Re: No me sale un simple do - while T_T
Publicado por: engel lex en 13 Diciembre 2016, 23:20 pm
Citar
Tengo un ejercicio en el cual tengo que validar el ingreso de un caracter permitiendo que solo guarde letras mayusculas o el asterisco.

Código:
while((car<'A' || car>'Z') || car!='*');
tabla de verdad

"car<'A'" lo llamaremos "a"
"car>'>'" lo llamaremos "b"
car!='*' lo llamaremos "c"

Código:
abc -> (a or b) -> or c
VVV -> V        -> V
VVF -> V        -> V
VFV -> V        -> V
VFF -> V        -> V
FVV -> V        -> V
FVF -> V        -> V
FFV -> V        -> V
FFF -> F        -> F

por tabla de verdad vemos que solo si "car" es >='A', a su vez <='Z' y a su vez =='*' sale...

es decir para salir del while car debe ser una letra y simultáneamente asterisco...