Test Foro de elhacker.net SMF 2.1

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.
int main()
{
char car;

do
{
    printf("Ingrese un caracter: \n");
    car=getche();

}
while((car<'A' && car>'Z') || car!='*');

printf("\nLa letra ingreada es %c",car);

    return 0;
}


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
Cita de: 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.

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

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
char car;

do
{
    printf("Ingrese un caracter: \n");
    car=getche();

}
while((car<'A' || car>'Z') || car!='*');

printf("\nLa letra ingreada es %c",car);

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


while((car<'A' || car>'Z') || car!='*');

tabla de verdad

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

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...