SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: tazz1987 en Sábado 26 de Julio de 2008, 00:56

Título: error con un cero en c
Publicado 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");
   
 }
Título: Re: error con un cero en c
Publicado por: Elforious en Sábado 26 de Julio de 2008, 07:04
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.
Título: Re: error con un cero en c
Publicado por: lostshell en Sábado 26 de Julio de 2008, 07:45
recuerda que 0 es falso, y todos los demas numeros es verdadero, por lo tanto en esta linea:
Código: Text
  1.  
  2. if (atoi (num))
  3.  
  4.  
si el numero es 0, regresa falso.

(es tan dificil usar los etiquetas de codigo??, deberian de ponerlo como regla  :blink:)
Título: Re: error con un cero en c
Publicado por: m0skit0 en Lunes 28 de Julio de 2008, 14:44
"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.
Título: Re: error con un cero en c
Publicado por: tazz1987 en Lunes 28 de Julio de 2008, 16:04
gracias a las personas que respondieron este mensaje me ayudaron mucho se los agradezco y el problema ya quedo resuleto muchas gracias