/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Podrían ayudarme a mejorar este algoritmo

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
mgonzalez14291



Registrado: 28 Nov 2011
Mensajes: 12

MensajePublicado: 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
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com