elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  valuar caracter para opcion S/N
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: valuar caracter para opcion S/N  (Leído 5,038 veces)
Torino10

Desconectado Desconectado

Mensajes: 56



Ver Perfil
valuar caracter para opcion S/N
« en: 29 Abril 2012, 03:06 am »

Hola!

Tengo problemas a la hora de evaluar un caracter que se captura para ver que opción realizar...

Lo que quiero realizar es que después de realizada una acción (cargo valores en un vector de tipo struct), quiero preguntarle al usuario si desea volver a cargar valores...
El código es este...

Código
  1. result=cargararticulo(vecarticulos);                    
  2.  
  3.                  if (result==1)
  4.                     {
  5.                     while ((strcmp(resp, "s")==0) || (strcmp(resp, "S")==0))
  6.                           {
  7.                           printf("\n\nEl articulo se guardo correctamente\n");
  8.                           printf("%cDesea ingresar otro%c [s/n]: ", 168, 63);
  9.                           gets(resp);
  10.                           result=cargararticulo(vecarticulos);                    
  11.                           }
  12.                     }
  13.                  else
  14.                      {
  15.                      printf("\n\nEl vector esta lleno\n");
  16.                      }

Primero llamo a la funcion "cargararticulos" la cual se encarga de realizar la carga en el vector y me devuelve 1 si se cargo correctamente o -1 si el vector esta lleno...
Por eso a ese valor lo guardo en una variable "result" y despues pregunto por ella si tomo valor 1, para despues enviar el msj por si se quiere cargar otro articulo...
guardo "s" o "n" dependiendo lo que se ingrese y no deberia volver a entrar al while una vez que ingrese "n"

Alguna solucion?


En línea

"Tanto si crees que puedes, como si crees que no puedes, estas en lo correcto"
Torino10

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: valuar caracter para opcion S/N
« Respuesta #1 en: 29 Abril 2012, 03:18 am »

Edite un poco el código para probar con un entero en lugar de char y algo funciona...

Código
  1. if (result==1)
  2.                     {
  3.                     printf("\n\nEl articulo se guardo correctamente\n");
  4.                     printf("%cDesea ingresar otro%c [1-Si/2-No]: ", 168, 63);
  5.                     scanf("%d", &resp);
  6.                     while (resp==1)
  7.                           {                          
  8.                           result=cargararticulo(vecarticulos);                    
  9.                           }
  10.                     }
  11.                  else
  12.                      {
  13.                      printf("\n\nEl vector esta lleno\n");
  14.                      }

El  problema es que dentro del while deberia volver a preguntar por la respuesta que dio la funcion...
Es decir 1 si se guardo correctamente o -1 si el vector esta lleno...

Eso es lo que me confunde. Alguna idea de como lo podria hacer?


En línea

"Tanto si crees que puedes, como si crees que no puedes, estas en lo correcto"
s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: valuar caracter para opcion S/N
« Respuesta #2 en: 29 Abril 2012, 03:44 am »

Código
  1. if (result==1)
  2.                     {
  3.                     do
  4.                           {
  5.                           printf("\n\nEl articulo se guardo correctamente\n");
  6.                           printf("%cDesea ingresar otro%c [s/n]: ", 168, 63);
  7.                           gets(resp);
  8.                           if(strcmp(tolower(resp), "s")==0)
  9.                               result=cargararticulo(vecarticulos);                    
  10.                           }while((strcmp(tolower(resp), "s")==0) && result == 1);
  11.                     }
  12.                  else
  13.                      {
  14.                      printf("\n\nEl vector esta lleno\n");
  15.                      }
En línea

Torino10

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: valuar caracter para opcion S/N
« Respuesta #3 en: 29 Abril 2012, 03:49 am »

Puede solucionar el problema con un do while...
Gracias por la respuesta s00rk

Código
  1. do
  2.                   {
  3.                   result=cargararticulo(vecarticulos);
  4.  
  5.                  if (result==1)
  6.                     {                                                    
  7.                     printf("\n\nEl articulo se guardo correctamente\n");
  8.                     printf("%cDesea ingresar otro%c [1-Si/2-No]: ", 168, 63);
  9.                     gets(resp);
  10.                     }
  11.                  else
  12.                      {
  13.                      printf("\n\nEl vector esta lleno\n");
  14.                      strcpy(resp, "n");
  15.                      }
  16.                  } while ((strcmp(resp, "s")==0) || (strcmp(resp, "s")==0));

No conocia la funcion "tolower" y la voy a agregar al codigo!

Saludos!
En línea

"Tanto si crees que puedes, como si crees que no puedes, estas en lo correcto"
david_BS

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Re: valuar caracter para opcion S/N
« Respuesta #4 en: 29 Abril 2012, 17:21 pm »

Este tipo de validación podés comparar usando sólamente un char, que tiene equivalencia con un número ascii (entero)

Código:
char a = 'S'; // 83 en ascii

a=tolower(a); // pasa a ser 115

Código:
if( a == 's' ) { then }

Código:
if( a == 115 ) { then }

http://www.asciitable.com/

En línea

Torino10

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: valuar caracter para opcion S/N
« Respuesta #5 en: 29 Abril 2012, 21:15 pm »

Gracias david_BS!

No podia poner en funcionamiento la funcion tolower(), ahora si entendi como funciona.

Un abrazo! ;)
En línea

"Tanto si crees que puedes, como si crees que no puedes, estas en lo correcto"
Odai

Desconectado Desconectado

Mensajes: 25


Odai


Ver Perfil
Re: valuar caracter para opcion S/N
« Respuesta #6 en: 30 Abril 2012, 16:33 pm »

 en el while... utliza
while(resp!='n')
{
...
}
y qita el gets eso se utliza para una cadena de caracteres, y solo lees uno, intenta con
resp=tolower(getchar());


« Última modificación: 30 Abril 2012, 16:38 pm por Niara » En línea

Tengo demasiadas fantasías para ser una ama de casa.
Marilyn Monroe
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines