• Domingo 22 de Diciembre de 2024, 23:01

Autor Tema:  Necesito Ayuda  (Leído 926 veces)

franc

  • Miembro MUY activo
  • ***
  • Mensajes: 157
    • Ver Perfil
Necesito Ayuda
« en: Miércoles 4 de Febrero de 2004, 23:12 »
0
Tengo que resolver un ejercicio:

Citar
   Se quiere organizar una liga de fútbol entre 4 países, España, Francia, Gran Bretaña e Italia,  de  tal manera que cada país juega contra los restantes  en una primera vuelta y posteriormente vuelven a jugar en una segunda vuelta. De este modo, si en la primera vuelta se juega el partido España-Francia, en la segunda se jugará  Francia-España. Implementar un programa en C que permita almacenar los datos anteriores. Se deberá guardar un 0 si el partido se ha empatado, un 1 si el ganador es el primer país y un 2 si el ganador es el segundo país. Realiza posteriormente una función que permita consultar el resultado de un partido ( por ejemplo, España-Italia).


este es el codigo que he hecho para intentar resolverlo. Pero no se donde esta el fallo.

¿ Alguien me podria ayudar ?

Gracias ! :)


Código: Text
  1.  
  2.  
  3. # include < stdio.h >
  4. # include < stdlib.h >
  5. # include < conio.h >
  6.  
  7. //tabla de resultados de una liga ( ida y vuelta ).
  8.  
  9.  
  10. char *tabla[5][5];   // inicializo la tabla como vrble universal
  11.  
  12.  
  13. void consultar( )
  14. {
  15.  
  16. char team1[15],team2[15];
  17. int i,j;
  18.  
  19.  
  20.     clrscr();
  21.  
  22.   printf("Introduzca el primer equipo: ");
  23.   gets(team1);  // pido el equipo local
  24.  
  25.   printf("Introduzca el segundo equipo: ");
  26.   gets(team2);  // pido el equipo visitante
  27.  
  28.     if ((team1=="españa")||(team1=="España")) i=1;       // miro a que fila corresponde team1
  29.   else if ((team1=="francia")||(team1=="Francia")) i=2;
  30.     else if ((team1=="Gran Bretaña")||(team1=="gran bretaña")) i=3;
  31.     else if ((team1=="italia")||(team1=="Italia")) i=4;
  32.  
  33.  
  34.  
  35.  
  36.     if ((team2=="españa")||(team2=="España")) j=1;   // miro a que columna corresponde team2
  37.   else if ((team2=="francia")||(team2=="Francia")) j=2;
  38.     else if ((team2=="Gran Bretaña")||(team2=="gran bretaña")) j=3;
  39.     else if ((team2=="italia")||(team2=="Italia")) j=4;
  40.  
  41.  
  42.  
  43.    // veo el resultado de la casilla consultada
  44.     if (tabla[i][j]=="0")    
  45.     printf("\n Partido empatado.");
  46.     else if (tabla[i][j]=="1")
  47.         printf("\n Partido ganado por %s",team1);
  48.            else if (tabla[i][j]=="2")
  49.           printf("\n Partido ganado por %s",team2);
  50.  
  51.  
  52. }
  53. void main()
  54. {
  55.  
  56. int i,j;
  57.  
  58. tabla[5][5]=(char *) malloc (15);  // guardo espacio en memoria
  59.  
  60. //inicializo la tabla.
  61.  
  62. tabla[0][0]="";
  63.  
  64. tabla[1][0]="España";
  65. tabla[2][0]="Francia";
  66. tabla[3][0]="Gran Bretaña";
  67. tabla[4][0]="Italia";
  68.  
  69. tabla[0][1]="España";
  70. tabla[0][2]="Francia";
  71. tabla[0][3]="Gran Bretaña";
  72. tabla[0][4]="Italia";
  73.  
  74.  // bucle para introducir resultados
  75.  
  76.     for(i=1;i<=4;i++)
  77.     {
  78.   for(j=1;j<=4;j++)
  79.   {
  80.          
  81.         if(i!=j){
  82.  
  83.         clrscr();
  84.                                         printf("\nUse 0,1,2 segun corresponda");
  85.         printf("\nIntroduce el resultado. %s - %s: ",tabla[i][0],tabla[0][j]);
  86.         gets(tabla[i][j]);   // voy pidiendo resultados
  87.                                         }
  88.  
  89.                 }
  90.         }
  91.  
  92.  
  93. consultar();   // consultar resultados
  94.  
  95. getche();
  96.  
  97. }   // fin
  98.  
  99.  
  100.  

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Necesito Ayuda
« Respuesta #1 en: Jueves 5 de Febrero de 2004, 14:43 »
0
Hola:

  No he podido mirarlo en profundidad, pero a simple vista me ha parecido observar lo siguiente:

En la tabla no se puede almacenar cualquier tipo de datos, por lo que parece vas a utilizar enteros, así que declaralá como
Código: Text
  1. int tabla[4][4];
  2.  
, y no es necesario que almacenes los nombres de los equipos en la fila y columna 0, es suficiente con que pongas en un comentario la correspondencia, o si necesitas almacenarlo, utiliza un array
Código: Text
  1.  
  2.   typedef equipo char[15];
  3.  
  4.   equipo correspondencia[4];
  5.   int i;
  6.  
  7.   correspondencia[0] = "España";
  8.   correspondencia[1] = "Francia";
  9.   correspondencia[2] = "Gran Bretaña";
  10.   correspondencia[3] = "Italia";
  11.  
  12.  

Otra cosilla, al comparar el contenido de team1 y team2 utiliza la función strcmp(cadena1, cadena2) que es la forma adecuada para comparar cadenas. Además si has almacenado las correspondencias puedes ahorrarte líneas de código haciendo:
Código: Text
  1.  
  2.   i = 0;
  3.   encontrado = 0;
  4.   while (i<4 && !encontrado)
  5.       {
  6.       if (strcmp(team, correspondencia[i])==0)
  7.        encontrado = 1;  //Tienes almacenado en i el número correspondiente al equipo
  8.       else
  9.         i++;
  10.       }
  11.  
  12.  

Espero que te sirva.

Saludos

franc

  • Miembro MUY activo
  • ***
  • Mensajes: 157
    • Ver Perfil
Re: Necesito Ayuda
« Respuesta #2 en: Jueves 5 de Febrero de 2004, 16:08 »
0
ya lo tengo, gracias !!

:D