| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Filzix
Registrado: 30 Oct 2007 Mensajes: 23
| Publicado: 21/03/2008 3:31 am | | | Título: Problema con algoritmo |
| tengo este algoritmo que lo que hace es me verificar si lo q introduce por teclado el usuario es un numero entre el 1 y el 12 pero teniendo en cuenta el control de error por si introduce por ejemplo "9er"
El problema que tengo es siempre me entra en la parte del codigo señalado aunque solo introduzca un numero (p.e. "2")
Alguien sabe el porque?
Lenguaje C, Dev-C++
| Código: | #include <stdio.h> #include <string.h> #define N 5
int main(){ char a[N],b[N]; int i,str,num,correct,cont; cont = 0; while (cont == 0){ printf("Introduce Mes\n"); scanf("%s",a); str = strlen(a); for(i=0;i<str;i++){ //AQUI ES DONDE ENTRA if( (a[i]<'0') || (a[i]>'9') ){ correct=1; i=str; } ///////////////////////// else { b[i]= a[i]; } } if(correct==1){ printf("error\n"); } else { num = atoi(b); if((num<1)||(num>12)){ printf("error\n"); } else { cont = 1; } } } return 0; }
|
|
| | Volver arriba | |  | digies

Registrado: 18 Nov 2005 Mensajes: 1001 Ubicación: Blumenau (Br)
| Publicado: 21/03/2008 11:19 am | | | Título: |
| El problema fundamental radica en que la función atoi pertenece al header <stdlib.h>, por lo tanto tienes que incluirla. También deberías inicializar la variable correct a un valor, por ejemplo a 0 dentro del bucle while. La variable b (array) no es necesaria, con a es suficiente.
Un ejemplo en C estándar sería:
| Código: | #include <stdio.h> #include <stdlib.h> #include <string.h>
#define N 5
int main(void) { char a[N]; int i, str, num; enum boolean { False, True }; enum boolean cont = False, correct;
while (cont == False) { correct = False; printf("Introduce Mes\n"); scanf("%s", a); str = strlen(a);
for (i = 0; i < str; i++) if ((a[i] < '0') || (a[i] > '9')) correct = True;
if (correct == True) printf("error\n"); else { num = atoi(a); if (num < 1 || num > 12) printf("error\n"); else cont = True; } }
return EXIT_SUCCESS; }
|
Un saludo |
| | Volver arriba | |  | Filzix
Registrado: 30 Oct 2007 Mensajes: 23
| Publicado: 21/03/2008 11:38 am | | | Título: |
| | Perfecto, Muchas gracias. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |