Programación General > C/C++

 Necesito Ayuda

(1/1)

franc:
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).


--- Fin de la cita ---

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 ---  # include < stdio.h ># include < stdlib.h ># include < conio.h > //tabla de resultados de una liga ( ida y vuelta ).  char *tabla[5][5];   // inicializo la tabla como vrble universal  void consultar( ){ char team1[15],team2[15];int i,j;      clrscr();   printf("Introduzca el primer equipo: ");  gets(team1);  // pido el equipo local   printf("Introduzca el segundo equipo: ");  gets(team2);  // pido el equipo visitante     if ((team1=="españa")||(team1=="España")) i=1;       // miro a que fila corresponde team1  else if ((team1=="francia")||(team1=="Francia")) i=2;    else if ((team1=="Gran Bretaña")||(team1=="gran bretaña")) i=3;    else if ((team1=="italia")||(team1=="Italia")) i=4;        if ((team2=="españa")||(team2=="España")) j=1;   // miro a que columna corresponde team2  else if ((team2=="francia")||(team2=="Francia")) j=2;    else if ((team2=="Gran Bretaña")||(team2=="gran bretaña")) j=3;    else if ((team2=="italia")||(team2=="Italia")) j=4;      // veo el resultado de la casilla consultada    if (tabla[i][j]=="0")        printf("\n Partido empatado.");    else if (tabla[i][j]=="1")        printf("\n Partido ganado por %s",team1);           else if (tabla[i][j]=="2")          printf("\n Partido ganado por %s",team2);  }void main(){ int i,j; tabla[5][5]=(char *) malloc (15);  // guardo espacio en memoria //inicializo la tabla. tabla[0][0]=""; tabla[1][0]="España";tabla[2][0]="Francia";tabla[3][0]="Gran Bretaña";tabla[4][0]="Italia"; tabla[0][1]="España";tabla[0][2]="Francia";tabla[0][3]="Gran Bretaña";tabla[0][4]="Italia";  // bucle para introducir resultados     for(i=1;i<=4;i++)    {  for(j=1;j<=4;j++)  {                  if(i!=j){         clrscr();                                        printf("\nUse 0,1,2 segun corresponda");        printf("\nIntroduce el resultado. %s - %s: ",tabla[i][0],tabla[0][j]);        gets(tabla[i][j]);   // voy pidiendo resultados                                        }                  }        }  consultar();   // consultar resultados getche(); }   // fin   

mabrev:
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 ---int tabla[4][4]; , 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 ---   typedef equipo char[15];   equipo correspondencia[4];  int i;   correspondencia[0] = "España";  correspondencia[1] = "Francia";  correspondencia[2] = "Gran Bretaña";  correspondencia[3] = "Italia";  
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 ---   i = 0;  encontrado = 0;  while (i<4 && !encontrado)      {      if (strcmp(team, correspondencia[i])==0)       encontrado = 1;  //Tienes almacenado en i el número correspondiente al equipo      else        i++;      }  
Espero que te sirva.

Saludos

franc:
ya lo tengo, gracias !!

:D

Navegación

[0] Índice de Mensajes

Ir a la versión completa