Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[MUY FÁCIL] bucle hasta negativo?

Estas en el tema de [MUY FÁCIL] bucle hasta negativo? en el foro de C/C++ en Foros del Web. Buenas! Estoy empezando con C y no llego a entender el enunciado que me plantean para resolver. Es algo así: · P1: Conceptos a trabajar: ...
  #1 (permalink)  
Antiguo 08/10/2007, 06:41
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 18 años, 2 meses
Puntos: 8
De acuerdo [MUY FÁCIL] bucle hasta negativo?

Buenas!

Estoy empezando con C y no llego a entender el enunciado que me plantean para resolver.

Es algo así:
· P1:
Conceptos a trabajar: Empleo de variables y entrada/salida.
Enunciado: Realizar un programa que pida la edad y muestre por pantalla el
mensaje “Tienes XXX años”.
Código:
#include <stdio.h>
main(){
    int a;
    printf("Escribe tu edad:");
    scanf("%d",&a);
    printf("Tienes %d años",a);
}
He hecho yo.
· P2:
Conceptos a trabajar: Bucles.
Enunciado: Modificar el programa anterior para que se ejecute repetidas veces
hasta que se introduzca una edad negativa.
Código:
A ver, creo que es esto:
#include <stdio.h>
main(){
    int a;
while (a>=0) {
    printf("Escribe tu edad:");
    scanf("%d",&a);
    printf("Tienes %d años\n",a);
    }
}
¿Puee ser?
A ver si me echáis un cable.

Muchas gracias de antemano!!

Última edición por T_O_N_N_Y; 08/10/2007 a las 06:57
  #2 (permalink)  
Antiguo 08/10/2007, 07:20
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: [MUY FÁCIL] bucle hasta negativo?

Está bien, excepto porque:

int a;

debería ser:

int a = 0;
  #3 (permalink)  
Antiguo 08/10/2007, 07:51
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 18 años, 2 meses
Puntos: 8
Re: [MUY FÁCIL] bucle hasta negativo?

ok, muchas gracias.

Lo que pasa es que tengo un problema.

Si usas ese código y pones en "Escribe tu edad:" pones algún carácter como dos puntos (:), comas (,), punto y coma (;), y otros se ralla y sale miles de veces.

Eso es por el compilador que uso? (Uso Dev-C)

Un saludo y gracias por la respuesta!!
  #4 (permalink)  
Antiguo 08/10/2007, 08:50
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 7 meses
Puntos: 28
Re: [MUY FÁCIL] bucle hasta negativo?

Cita:
Iniciado por T_O_N_N_Y Ver Mensaje
ok, muchas gracias.

Lo que pasa es que tengo un problema.

Si usas ese código y pones en "Escribe tu edad:" pones algún carácter como dos puntos (:), comas (,), punto y coma (;), y otros se ralla y sale miles de veces.

Eso es por el compilador que uso? (Uso Dev-C)

Un saludo y gracias por la respuesta!!
No, es porque el C no valida lo que estás escribiendo...si deseas validar correctamente lo que escribe el usuario debes leer una cadena de caracteres, revisar que en la cadena solo existan números y luego convertirla a entero con atoi.

saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 08/10/2007, 10:30
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: [MUY FÁCIL] bucle hasta negativo?

Cita:
Iniciado por _Lucifer_ Ver Mensaje
No, es porque el C no valida lo que estás escribiendo...si deseas validar correctamente lo que escribe el usuario debes leer una cadena de caracteres, revisar que en la cadena solo existan números y luego convertirla a entero con atoi.

saludos
scanf() sí valida los datos, e informa de si fueron correctos o no para el patrón dado.

Si no recuerdo mal, verificar el valor de retorno scanf() debería bastar.
  #6 (permalink)  
Antiguo 08/10/2007, 13:04
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 7 meses
Puntos: 28
Re: [MUY FÁCIL] bucle hasta negativo?

Retorna la cantidad de valores leídos.

Si escribes caracteres no hay mayor problema, como dices retorna cero efectivamente, pero cuando escribes un número real retorna cero y se queda en una especie de loop infinito (supongamos que está en un ciclo while), si te sales de manera abrupta del ciclo los siguientes scanf quedan inutilizados.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #7 (permalink)  
Antiguo 08/10/2007, 13:25
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: [MUY FÁCIL] bucle hasta negativo?

Cita:
RETURN VALUES
These functions return the number of input items assigned,
which can be fewer than provided for, or even zero, in the
event of a matching failure. Zero indicates that, while
there was input available, no conversions were assigned;
typically this is due to an invalid input character, such
as an alphabetic character for a `%d' conversion. The
value EOF is returned if an input failure occurs before
any conversion such as an end-of-file occurs. If an error
or end-of-file occurs after conversion has begun, the num-
ber of conversions which were successfully completed is
returned.
Según eso, si scanf() te devuelve 0 o EOF, algo ha salido mal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.