mgonzalez14291
Registrado: 28 Nov 2011 Mensajes: 12
| Publicado: 29/11/2011 3:26 pm | | | Título: Podrían ayudarme a mejorar este algoritmo |
| Buen día amigos nuevamente les dejo este algoritmo para ver si me pueden ayudar a mejorarlo, en si el algoritmo ya hace lo que me pide el ejercicio pero me gustaria saber como mejorarlo lo más posible
Ejercicio:
Ejercicio:
Se desea llevar el control de los partidos del Campeonato Ecuatoriano de Fútbol, para ello se requiere registrar el nombre, la ciudad de la que procede, los puntos ganados, goles anotados y goles en contra, esto para cada equipo participante, durante el desarrollo de cada partido se requiere registrar los nombres de los equipo, la fecha y hora del partido, la sede y el marcador, luego de cada partido se debe actualizar los puntajes y goles anotados por cada equipo y al final de desea generar como reporte la tabla de posiciones, la cual debe mostrar la lista de equipos ordenada de mayor a menor de acuerdo al puntaje, en caso de haber equipos con el mismo puntaje se debe considerar el gol diferencia (goles a favor – goles en contra)
| Código: | #include <iostream> #include <cstdio> #include <cstring>
using namespace::std;
struct equipo { char nombre[30]; char ciudad[30]; int puntos; int golesFav; int golesCon; };
struct fecha { int dia; int mes; int anio; };
struct hora { int horas; int minutos; };
struct marcador { int golesFav; int golesCon; };
struct partido { char nombres[30]; fecha fechaD; hora horasD; char ciudadD[30]; marcador marcadorD; int puntosB; };
main () { equipo prev[100][6]; partido bef; int opcion; int cont=0; int aux=0; int res = 0; int totGoles; int auxOrd; do{ do{ cout<<endl<<"Ingreso de datos de Equipos"<<endl<<endl; cout<<"1.-Ingresar nuevo equipo "<<endl; cout<<"2.-Agregar un nuevo resultado "<<endl; cout<<"3.-Ver tabla "<<endl; cout<<"4.-Salir "<<endl; cout<<"Elija un opcion: "; cin>>opcion; cout<<endl; if(opcion == 1) { cont++; } }while(opcion<1 && opcion>4); switch (opcion) { case 1: cout<<"Ingrese el nombre del equipo (Min 4 letras): "; fflush(stdin); fgets(prev[cont][1].nombre, 30,stdin); cout<<"Ingrese el nombre de la ciudad: "; fflush(stdin); fgets(prev[cont][2].ciudad, 30, stdin); cout<<"Ingrese los puntos ganados hasta el momento: "; cin>>prev[cont][3].puntos; cout<<"Ingrese los goles anotados: "; cin>>prev[cont][4].golesFav; cout<<"Ingrese los goles en contra: "; cin>>prev[cont][5].golesCon; break; case 2: cout<<"Ingrese el nombre del equipo : "; cin>>bef.nombres; for(int i=1;i<=cont;i++) { if(prev[i][1].nombre[0]==bef.nombres[0] && prev[i][1].nombre[1]==bef.nombres[1] && prev[i][1].nombre[2]==bef.nombres[2]&& prev[i][1].nombre[3]==bef.nombres[3]) { aux = 1; res = i; i = cont+1; } } if(cont==0) { cout<<"No se han ingresado equipos aun."<<endl; }else{ if(aux==0) { cout<<"El nombre del equipo no existe o esta mal escrito."<<endl; } } int *pPunt; int *pGolF; int *pGolC; pPunt=&prev[res][3].puntos; pGolF=&prev[res][4].golesFav; pGolC=&prev[res][5].golesCon; if(aux == 1) { aux=0; do{ cout<<"Ingrese la fecha del encuentro(DD/MM/AAAA): "; cin>>bef.fechaD.dia>>bef.fechaD.mes>>bef.fechaD.anio; }while(bef.fechaD.dia > 30 || bef.fechaD.mes > 12 || bef.fechaD.anio != 2011); do{ cout<<"Ingrese la hora del encuentro: "; cin>>bef.horasD.horas>>bef.horasD.minutos; }while(bef.horasD.horas > 24 || bef.horasD.minutos > 60); cout<<"Ingrese la sede: "; fflush(stdin); fgets(bef.ciudadD, 30, stdin); cout<<"Ingrese el marcador(GolFav GolCont): "; cin>>bef.marcadorD.golesFav>>bef.marcadorD.golesCon; if(bef.marcadorD.golesFav<bef.marcadorD.golesCon || bef.marcadorD.golesFav==bef.marcadorD.golesCon) { bef.puntosB = 0; } if(bef.marcadorD.golesFav>bef.marcadorD.golesCon) { bef.puntosB = 3; } if(bef.marcadorD.golesFav==0 && bef.marcadorD.golesCon==0) { bef.puntosB = 1; } cout<<"Aqui"; *pPunt = *pPunt+bef.puntosB; *pGolF = *pGolF+bef.marcadorD.golesFav; *pGolC = *pGolC+bef.marcadorD.golesCon; } break; case 3: char auxNomEqui[30]; char auxNomCiu[30] ; int auxPuntos; int auxGolesFav; int auxGolesCon; for(int i=1;i<cont;i++) { for(int j=1;j<=cont;j++) { if(prev[j][3].puntos < prev[j+1][3].puntos) { strcpy(auxNomEqui,prev[j][1].nombre); strcpy(prev[j][1].nombre,prev[j+1][1].nombre); strcpy(prev[j+1][1].nombre,auxNomEqui); strcpy(auxNomCiu,prev[j][2].ciudad); strcpy(prev[j][2].ciudad,prev[j+1][2].ciudad); strcpy(prev[j+1][2].ciudad,auxNomCiu); auxPuntos = prev[j][3].puntos; prev[j][3].puntos = prev[j+1][3].puntos; prev[j+1][3].puntos = auxPuntos; auxGolesFav = prev[j][4].golesFav; prev[j][4].golesFav = prev[j+1][4].golesFav; prev[j+1][4].golesFav = auxGolesFav; auxGolesCon = prev[j][5].golesCon; prev[j][5].golesCon = prev[j+1][5].golesCon; prev[j+1][5].golesCon = auxGolesCon; }else{ if(prev[j][3].puntos == prev[j+1][3].puntos) { if(prev[j][4].golesFav < prev[j+1][4].golesFav) { strcpy(auxNomEqui,prev[j][1].nombre); strcpy(prev[j][1].nombre,prev[j+1][1].nombre); strcpy(prev[j+1][1].nombre,auxNomEqui); strcpy(auxNomCiu,prev[j][2].ciudad); strcpy(prev[j][2].ciudad,prev[j+1][2].ciudad); strcpy(prev[j+1][2].ciudad,auxNomCiu); auxGolesFav = prev[j][4].golesFav; prev[j][4].golesFav = prev[j+1][4].golesFav; prev[j+1][4].golesFav = auxGolesFav; auxGolesCon = prev[j][5].golesCon; prev[j][5].golesCon = prev[j+1][5].golesCon; prev[j+1][5].golesCon = auxGolesCon; } } } } } for(int i=1;i<=cont;i++) { cout<<prev[i][1].nombre<<" "<<prev[i][2].ciudad<<" "<<prev[i][3].puntos<<" "<<prev[i][4].golesFav<<" "<<prev[i][5].golesCon<<endl; } break; case 4: break; default: cout<<"Valor no valido"; } }while(opcion<4); system("pause"); }
|
Cualquier cosa que me puedan decir para mejorarlo se los agradecería _________________ Todo es posible |
|