• Lunes 30 de Marzo de 2020, 08:19

Autor Tema:  Ejercicio complicado  (Leído 348 veces)

kingsizen

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Ejercicio complicado
« en: Lunes 20 de Abril de 2009, 17:14 »
0
hola gente del foro. estoy tratando de hacer un programa muy futbolero, se trata de ingresar nombres de equipos, partidos ganados, perdidos y empatados, y este calcule los puntos y me muestre la tabla de posiciones.
para esto decide no usar estructuras ya que todavia no llegue a ver este tema, por lo tanto lo estoy haciendo en base a arrays, ahi va el codigo:

Código: C
  1.  
  2. # include <stdio.h>
  3.  
  4. void carga(char n[4][20],int g[4],int e[4],int p[4])
  5. {
  6.       int i;
  7.      
  8.       for (i=0;i<4;++i)
  9.       {
  10.       printf ("Ingrese nombren");
  11.       scanf ("%s",&n[i]);
  12.       printf ("Ingrese partidos ganadosn");
  13.       scanf ("%d",&g[i]);
  14.       printf ("Ingrese partidos empatadosn");
  15.       scanf ("%d",&e[i]);
  16.       printf ("Ingrese partidos perdidosn");
  17.       scanf ("%d",&p[i]);
  18.       }
  19. }
  20.  
  21. void calculo (int g[4],int e[4],int pts[4])
  22. {int i;
  23.      for (i=0;i<4;++i)
  24.      {  
  25.          
  26.          pts[i] = (g[i]*3);
  27.          pts[i]= pts[i]+e[i];
  28.          }
  29. }
  30.          
  31.          
  32. void tabla (char e[4][20],int pts[4])
  33.  
  34. {
  35.      int i,j,aux,taux[4][20];
  36.      
  37.      for (i=0;i<4;++i)
  38.          for (j=0;j<4;++j)
  39.          {
  40.              if (pts[i] < pts[j])
  41.                 {    
  42.                       aux=pts[i];
  43.                       taux[i][20]=e[i][20];
  44.                       pts[i]=pts[j];
  45.                       e[i][20]=e[j][20];
  46.                       pts[j]=aux;
  47.                       e[j][20]=taux[i][20];
  48.                       }
  49.                       }
  50.      
  51. }
  52.              
  53.              
  54.          
  55.  
  56. main()
  57. {
  58.       char equipos [4][20];
  59.       int i,puntos[4],ganados[4],empatados[4],perdidos[4];
  60.      
  61.       carga(equipos,ganados,empatados,perdidos);
  62.       calculo(ganados,empatados,puntos);
  63.       tabla(equipos,puntos);
  64.       /*for (i=0;i<4;++i)
  65.       {
  66.           printf ("%s %d",equipos[i],puntos[i]);
  67.           }
  68.           } */
  69.          
  70.           printf ("TABLA DE POSICIONESn");
  71.           printf ("-------------------n");
  72.           for (i=0;i<4;++i)
  73.           {
  74.           printf ("%s",equipos[i]);
  75.           printf ("%d Puntos: n",puntos[i]);
  76.           }
  77. }
  78.  
  79.  

las dudas sobre este programa son:
- al hacer el ordenamiento tambien intento que el nombre del equipo se ordene en la misma posicion (claro , en un arreglo diferente) que los puntos. pero... esta bien como lo hice??
-al mostrar la tabla de posiciones me devuelve cualquier cosa, cuales son los errores?
- y entrando en el tema... en que me beneficiaria usar estructuras para este ejercicio?

saludos. espero sus respuestas!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Ejercicio complicado
« Respuesta #1 en: Martes 21 de Abril de 2009, 09:47 »
0
Cita de: "kingsizen"
intento que el nombre del equipo se ordene en la misma posicion
Yo que tú sólo ordenaría a la hora de imprimir o bien usaría otra estructura de datos más fácil de ordenar (una lista por ejemplo).

Cita de: "kingsizen"
-al mostrar la tabla de posiciones me devuelve cualquier cosa, cuales son los errores?
La función carga() la tienes mal definida:

Código: C
  1. void carga(char **n,int *g,int *e,int *p)
  2.  

La llamas igual.

Cita de: "kingsizen"
en que me beneficiaria usar estructuras para este ejercicio?
Podrías usar estructuras de datos más adecuadas a tu problema, ya que las puedes definir tú mismo. No tienes por qué conformarte con los vectores (que son rápidos pero muy rigidos).

Salud