• Lunes 29 de Abril de 2024, 04:47

Autor Tema:  error con un cero en c  (Leído 1338 veces)

tazz1987

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
error con un cero en c
« en: Sábado 26 de Julio de 2008, 00:56 »
0
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");
   
 }

Elforious

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: error con un cero en c
« Respuesta #1 en: Sábado 26 de Julio de 2008, 07:04 »
0
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.

lostshell

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: error con un cero en c
« Respuesta #2 en: Sábado 26 de Julio de 2008, 07:45 »
0
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:)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: error con un cero en c
« Respuesta #3 en: Lunes 28 de Julio de 2008, 14:44 »
0
"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.

tazz1987

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: error con un cero en c
« Respuesta #4 en: Lunes 28 de Julio de 2008, 16:04 »
0
gracias a las personas que respondieron este mensaje me ayudaron mucho se los agradezco y el problema ya quedo resuleto muchas gracias