Problema con funcion getchar()
Publicado por Franco (6 intervenciones) el 02/03/2008 21:32:11
Buenas, estoy dando mis primeros pasos en C y me tope con un problema con la función getchar()
El hecho es que tengo que escribirla dos veces para que el programa la tome, sino la pasa de largo, por mas que busco todos los manuales, tutoriales y ejemplos la escriben una sola vez y rezan que les anda, pero a mí no...abajo pongo mi programa (si así se lo puede llamar) ;) Esta en la línea 28 y 29 dentro de la función leer_datos()
#include <stdio.h>
/*Definicion de funciones y variables*/
float num[100];
void calculo(void), leer_datos(void), mostrar(void);
int cant, i;
/*Comienzo*/
main()
{
leer_datos();
calculo();
mostrar();
printf (" FIN DEL PROGRAMA!! ");
return 0;
}
void leer_datos(void)
{
int op;
do
{
cant++; /*cuenta la cantidad de nros ingresados*/
printf (" Ingrese el nro%d: ", cant);
scanf ("%f", &num[cant]);
printf (" Otro número? s/n: " );
op = getchar(); /*Aca esta el problema*/
op = getchar();
}
while (op == 's');
}
void calculo(void)
{
for (i = 1; i <= cant; i++)
{
num[i] *= 2;
}
}
void mostrar(void)
{
for (i=1; i<=cant; i++)
{
printf (" El doble del nro%d es= %f", i, num[i]);
}
}
El hecho es que tengo que escribirla dos veces para que el programa la tome, sino la pasa de largo, por mas que busco todos los manuales, tutoriales y ejemplos la escriben una sola vez y rezan que les anda, pero a mí no...abajo pongo mi programa (si así se lo puede llamar) ;) Esta en la línea 28 y 29 dentro de la función leer_datos()
#include <stdio.h>
/*Definicion de funciones y variables*/
float num[100];
void calculo(void), leer_datos(void), mostrar(void);
int cant, i;
/*Comienzo*/
main()
{
leer_datos();
calculo();
mostrar();
printf (" FIN DEL PROGRAMA!! ");
return 0;
}
void leer_datos(void)
{
int op;
do
{
cant++; /*cuenta la cantidad de nros ingresados*/
printf (" Ingrese el nro%d: ", cant);
scanf ("%f", &num[cant]);
printf (" Otro número? s/n: " );
op = getchar(); /*Aca esta el problema*/
op = getchar();
}
while (op == 's');
}
void calculo(void)
{
for (i = 1; i <= cant; i++)
{
num[i] *= 2;
}
}
void mostrar(void)
{
for (i=1; i<=cant; i++)
{
printf (" El doble del nro%d es= %f", i, num[i]);
}
}
Valora esta pregunta


0