• Viernes 29 de Marzo de 2024, 12:12

Autor Tema:  [CONSULTA BASICA] Necesito asistencia con programa básico C++.  (Leído 2414 veces)

ferchando03

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
[CONSULTA BASICA] Necesito asistencia con programa básico C++.
« en: Lunes 4 de Abril de 2016, 03:12 »
0
La función que debe cumplir el programa es sacar un promedio entre 'n' numero de calificaciones pedidas al usuario. El problema es que la función quizás no esté trabajando bien y siempre me devuelve un valor de cero '0'. ¿Alguien podría decirme qué estoy haciendo mal?  :think: :think:

De antemano gracias.  :guitar:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. #include <stdlib.h>
  4. float prm(int numcal,int cal[])
  5. {
  6.         int i,suma,prom;
  7.        
  8.         for (i=0;i<numcal;++i)
  9.         {
  10.                 suma+=cal[i];
  11.                 return suma/numcal;
  12.         }      
  13. }
  14. int main ()
  15. {
  16.         int i,lim,cal[10],prom,caluniq;
  17.         printf("\n\n\n\tBienvenido al programa para calcular promedio de calificaciones");
  18.         printf("\n\n\tIngrese el numero de calificaciones que va a introducir:\t");
  19.         scanf("%i",&lim);
  20.         if (lim==1)
  21.         {
  22.                 printf("\n\t\tIngrese la calificacion 1:\t");
  23.                 scanf("%i",&caluniq);
  24.                 printf("\n\t\tSu promedio es: %i",caluniq);                    
  25.         }
  26.         else if (lim!=1)
  27.         {
  28.                 for (i=0;i<lim;i++)
  29.                 {
  30.                         printf("\n\t\tIngrese la calificacion %i:\t",i+1);
  31.                         scanf("%i",&cal[i]);
  32.                 }
  33.         printf("\n\t\tSu promedio es: %i",prm(lim,cal));
  34.         return 0;
  35.         }
  36.         }


chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:[CONSULTA BASICA] Necesito asistencia con programa básico C++.
« Respuesta #1 en: Martes 5 de Abril de 2016, 00:09 »
0
Hola ferchando.

La función prm devuelve un float y en la llamada y display con el printf pones %i que es un integer, cambialo para un float.
esta:
printf("\n\t\tSu promedio es: %i",prm(lim,cal));
por esta, solo cambia la i por la f:
printf("\n\t\tSu promedio es: %f",prm(lim,cal));

Por otra parte en la funcion prm tienes el return dentro del for, por lo cual en el primer pase del bucle retorna, debes poner el return despues de las llaves, cuando termine de hacer los calculos de las sumas de los valores de cal[].
Y por ultimo si devuelves el resultado de suma/numcal, al ser los dos datos int, devuelves un int, sin decimales, declara una variable float y asigna la division o  return (float)suma/numcal;

Código: [Seleccionar]
        int i, suma = 0;
        for (i=0;i<numcal;++i)
          suma += cal[i];
        return (float)suma/numcal;

Un saludo.

« última modificación: Martes 5 de Abril de 2016, 00:19 por chenech »