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
Ir a la versión completa