SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: acf00005 en Sábado 20 de Enero de 2007, 19:25

Título: Duda De Funciones
Publicado por: acf00005 en Sábado 20 de Enero de 2007, 19:25
Me gustaria saber como se haria para llamar a la funcion secundaria "media" desde la funcion principal y tb si dicha funcion "media" esta bien realizada .Agradeceria mucho su ayuda y que me diesen su respuesta al correo electronico rd_ocelot@hotmail.com

NOTA:El switch lo he puesto para hacer un menu con mas opciones despues.

/*******************************************************************************
 * Esta función calcula la media de los minutos jugados de todos los
 * jugadores por partido.
******************************************************************************/

float media(float tiempoJugado[12][10],int f,int c){
         
          float media;
          float suma;
          int i;
          int j;
         
          for(i=0; i<=f-1; i=i+1){
                 for(j=0; j<=c-1; j=j+1){
                          suma=suma+tiempoJugado[12][10];
                          }
                 }
         
          media= suma /(12*10);
         
           
}

int main(int argc, char *argv[])
{
    float tiempoJugado[12][10] =
      {{5.55, 16.8, 17.8, 7.95, 23.8, 19.6, 3.83, 24.9, 5.31, 37.4},
       {4.45, 23.1, 7.59, 38.0, 8.37, 24.1, 2.35, 20.5, 15.6, 27.2},
       {7.64, 6.31, 14.6, 14.7, 16.8, 6.50, 13.0, 14.8, 38.8, 20.7},
       {7.12, 13.9, 16.1, 19.7, 16.9, 2.13, 6.61, 27.0, 27.6, 8.90},
       {38.9, 1.86, 22.9, 0.491, 20.7, 27.2, 6.31, 20.1, 32.1, 15.5},
       {17.5, 39.6, 32.8, 3.10, 21.6, 5.21, 29.9, 3.20, 31.7, 37.9},
       {29.1, 22.5, 13.4, 17.7, 23.0, 13.4, 5.37, 37.9, 37.8, 30.6},
       {1.42, 20.1, 22.1, 28.9, 28.6, 15.0, 34.8, 28.5, 39.8, 37.7},
       {31.5, 1.28, 7.30, 31.0, 35.7, 1.51, 28.5, 24.1, 5.90, 37.5},
       {19.7, 35.2, 29.2, 6.96, 20.6, 22.0, 8.83, 19.4, 6.20, 13.9},
       {32.2, 13.0, 15.5, 22.3, 15.3, 38.0, 9.63, 33.3, 21.5, 36.3},
       {17.7, 29.5, 4.04, 18.2, 17.8, 1.16, 10.7, 39.4, 0.613, 30.5}};
 
   /****************************************************************************
   * Llamar a la funcion anteriormente implementada de una forma coherente
   ****************************************************************************/


int c  ;

printf("\nEscoja la opcion que desea:") ;
printf("\n       a - La media de tiempo jugado del equipo.") ;
printf("\n\nESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : ") ;
c = getchar() ;

switch ©
 {
  case 'a' :
    printf("\nLa media de tiempo jugado del equipo es: %f\n\n",media) ;
    break ;}
 
  system("PAUSE");   
  return 0;
}
Título: Re: Duda De Funciones
Publicado por: Mollense en Sábado 20 de Enero de 2007, 20:38
¿Enviarlo por correo?  :angry:
Para eso está el foro  :)

Deberías poner el código entre las etiquetas [C ODE] y [/C ODE] (sin el espacio)

Tenés varios errores, ¿Lo escribiste vos?

En fin...

Código: Text
  1. #include &#60;conio.h&#62;
  2. #include &#60;stdio.h&#62;
  3.  
  4. /*******************************************************************************
  5. * Esta función calcula la media de los minutos jugados de todos los
  6. * jugadores por partido.
  7. ******************************************************************************/
  8.  
  9. float media(float tiempoJugado[12][10]){
  10.   float media;
  11.   float suma;
  12.   int i;
  13.   int j;
  14.  
  15.   for(i=0; i&#60;12; i++){
  16.     for(j=0; j&#60;10; j++){
  17.       suma=suma+tiempoJugado[i][j];
  18.     }
  19.   }
  20.  
  21.   return suma /(12*10);
  22.  
  23. }
  24.  
  25. int main(int argc, char *argv[]){
  26.   clrscr();
  27.   float tiempoJugado[12][10] =
  28.     {
  29.     {5.55, 16.8, 17.8, 7.95, 23.8, 19.6, 3.83, 24.9, 5.31, 37.4},
  30.     {4.45, 23.1, 7.59, 38.0, 8.37, 24.1, 2.35, 20.5, 15.6, 27.2},
  31.     {7.64, 6.31, 14.6, 14.7, 16.8, 6.50, 13.0, 14.8, 38.8, 20.7},
  32.     {7.12, 13.9, 16.1, 19.7, 16.9, 2.13, 6.61, 27.0, 27.6, 8.90},
  33.     {38.9, 1.86, 22.9, 0.491, 20.7, 27.2, 6.31, 20.1, 32.1, 15.5},
  34.     {17.5, 39.6, 32.8, 3.10, 21.6, 5.21, 29.9, 3.20, 31.7, 37.9},
  35.     {29.1, 22.5, 13.4, 17.7, 23.0, 13.4, 5.37, 37.9, 37.8, 30.6},
  36.     {1.42, 20.1, 22.1, 28.9, 28.6, 15.0, 34.8, 28.5, 39.8, 37.7},
  37.     {31.5, 1.28, 7.30, 31.0, 35.7, 1.51, 28.5, 24.1, 5.90, 37.5},
  38.     {19.7, 35.2, 29.2, 6.96, 20.6, 22.0, 8.83, 19.4, 6.20, 13.9},
  39.     {32.2, 13.0, 15.5, 22.3, 15.3, 38.0, 9.63, 33.3, 21.5, 36.3},
  40.     {17.7, 29.5, 4.04, 18.2, 17.8, 1.16, 10.7, 39.4, 0.613, 30.5}
  41.     };
  42.  
  43.     int c;
  44.  
  45.     printf(&#34;&#092;nEscoja la opcion que desea:&#34;);
  46.     printf(&#34;&#092;n a - La media de tiempo jugado del equipo.&#34;);
  47.     printf(&#34;&#092;n&#092;nESCRIBA SU SELECCION , Y LUEGO &#60;&#60;ENTER&#62;&#62; : &#34;);
  48.     c = getchar();
  49.     switch(c) {
  50.       case 'a':
  51.         printf(&#34;&#092;nLa media de tiempo jugado del equipo es: %f&#092;n&#092;n&#34;,media(tiempoJugado));
  52.       break;
  53.     }
  54.     getch();;
  55.     return 0;
  56. }
  57.  

Revisalo.-

 :beer:
Título: Re: Duda De Funciones
Publicado por: acf00005 en Sábado 20 de Enero de 2007, 21:29
Si lo he escrito yo,pero me parece q el resultado no puede ser ese,sale demasiado no crees?

Me parece que tiene q haber algo mal al hacer la suma de todos los valores del array.


Escoja la opcion que desea:
       a - La media de tiempo jugado del equipo.
       b - La media de tiempo jugado por un jugador en concreto.
       c - Jugador que tiene la media de tiempo mas alta.

ESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : a

La media de tiempo jugado del equipo es: 65214289255208060000000000000000.000000


Presione una tecla para continuar . . .
Título: Re: Duda De Funciones
Publicado por: Geo en Domingo 21 de Enero de 2007, 18:57
Inicializa la variable suma, al declararla:
Código: Text
  1.  
  2. float suma = 0;
  3.  
  4.  
o antes de los ciclos donde realizas la suma.

Saludos,
JJ (Geo).
Título: Re: Duda De Funciones
Publicado por: Mollense en Domingo 21 de Enero de 2007, 19:49
Cita de: "Geo"
Inicializa la variable suma, al declararla:
Código: Text
  1.  
  2. float suma = 0;
  3.  
  4.  
o antes de los ciclos donde realizas la suma.

Saludos,
JJ (Geo).
El error tiene que ser otro , por mas que no la inicialize tomará el valor 0 en su definición.- (Aunque exista la pequeña y remota posibilidad de que algún día el valor de  NULL sea otro  :devil: ; no empiecen con eso  :ph34r: ).-

El código que le dí me funciona perfecto.-

Es cierto que debe inicializar la variable si va a realizar varias operaciones con la misma. Pero para el primer caso no hace falta.

Además, el número que le está resultando me parece que  <_<
Título: Re: Duda De Funciones
Publicado por: Eternal Idol en Domingo 21 de Enero de 2007, 20:10
Tiene razon Geo; En esta linea suma es un valor totalmente indefinido y se usa:

Código: Text
  1.  
  2. suma=suma+tiempoJugado[i][j];
  3.  
  4.  

Cita de: "Angel_K_ido"
El error tiene que ser otro , por mas que no la inicialize tomará el valor 0 en su definición.

Eso no es asi.

Cita de: "Angel_K_ido"
Es cierto que debe inicializar la variable si va a realizar varias operaciones con la misma. Pero para el primer caso no hace falta.

¿Que?
Título: Re: Duda De Funciones
Publicado por: acf00005 en Domingo 21 de Enero de 2007, 20:19
GRACIAS,ya esta solucionado pero no he podido entrar ants en el foro para comentarlo.

Habia q incializar suma=0; :D