SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: tazz1987 en Sábado 26 de Julio de 2008, 00:56
-
hola a todos miren tengo un problema con un cero al querer realizar una suma de valores y el promedio lo que pasa es que estos numeros deben de estar entre una rango de 0 y 100 pero cunado mi programa pongo el valor cero me pone "valor no valido" y ademas no lo suma como dato para el promedio espero me puedan ayudar con esta duda
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int main ()
{
char num[5];
int a,verdadero,nc;
float prom,suma=0.0,nv=0.0;
do
{
do
{
verdadero = 0; /*Para determinar si el numero dado es valido*/
printf("ntProporcione los numeros uno a unon");
printf ("t Introduza el numero entero entre 0 a 100n");
fflush(stdin);
scanf ("%s", &num);
if (atoi (num))
{
a = (atoi (num));/*para cambiar el caracter a numero*/
if(a>=0&&a<=100)/*para que el numero este entre estos valores*/
{
printf ("t Valor leido a = %d n", a );
verdadero = 1;
nv=nv+1; /*numero de valores*/
suma=suma+a; /* suma de valores*/
}
else
{
printf ("n t El valor proporcionado no es valido n ");
}
}
else
printf("valor no valido");
} while (! verdadero);
printf ("n t Para otro numero presione 1 seguir/0 salir: ");
fflush(stdin);
scanf (" %d", &nc);
} while (nc==1);
printf("ntNumero de valores es %.0fnn",nv);
printf("tLa suma es %.0fnn",suma);
prom=suma/nv; /*calcular el promedio*/
printf("tEl promedio es %.2fnn",prom);
system("pause");
}
-
Lo que pasa es que la función atoi() no devuelve valores buleanos (verdadero o falso), devuelve valores enteros.
Te recomiendo que hagas una funció que recorra todo el vector de char y te diga si es un número o no, preguntándote si Cadena[Contador] > '9' && Cadena[Contador] < '0' .
Espero haber ayudado.
-
recuerda que 0 es falso, y todos los demas numeros es verdadero, por lo tanto en esta linea:
si el numero es 0, regresa falso.
(es tan dificil usar los etiquetas de codigo??, deberian de ponerlo como regla :blink:)
-
"atoi (num)" te convierte de carácter a entero y desde luego la usas bien. Tu problema radica en que "suma" la has declarado como float cuando en realidad la usas para sumar int. Si sólo vas a introducir enteros (int), cambia la declaración de "suma" a int, porque si sumas enteros, nunca vas a obtener reales (float). Ya me cuentas.
-
gracias a las personas que respondieron este mensaje me ayudaron mucho se los agradezco y el problema ya quedo resuleto muchas gracias