Proyecto de 1° año

Iniciado por Nixo, 8 Octubre 2018, 17:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Nixo

Tengo que hacer un programa que organiza los partidos del mundial, debe estar hecho en c++ en el programa llamado ZinjaI, mi problema viene al momento de verificar que los datos son correctos. Y tengo problema con una verificación que me dá un error lógico, me estoy volviendo loco y tengo que entregar el programa terminado completamente para mañana a la noche.
Donde se produce el error lo  marqué con amarillo.







#include <iostream>
using namespace std;
int Rex(char arreglo[16],char nombre, int pos){//la función de la validación de datos de los equipos
   int i,posicion;
   i=1;
   while(i<=pos && arreglo!=nombre){//esto es para realizar una búsqueda linial, fijarce en el apunte del tema 5(arreglos)
      i=i+1;
   }
   if(i<=pos && arreglo==nombre)
        posicion=i;
   else{
      posicion=0;//si se repite un nombre sale 0
   }
   return(posicion);
}

int  Numgrup(char Grup[], char nom, int pos){//funcion de los grupos
   int a; int i ; int fun,fan;//choriso de variables auxiliares
   a=1; i=1; fan=1;fun=0;
   for(i=1;i<=pos;++i){//esta estructura la saqué de internet: https://foro.elhacker.net/programacion_cc/contar_elementos_de_un_vector-t446962.0.html
      if(Grup==nom){//me pareció interesante para tratar de resolver este problema, estoy tabajando en ello
         a++;
         if(a<5)
            fan=a;
         else{
            fan=0;
         }
      }
   }
   fun=fan;
   return(fun);
}
void CargadeDatos(char grupo[16], char todos_equipos[16]){//subprograma de subida de datos
   int Ind, bandera, banderaA, banderaB, banderaC, banderaD, verdad, grup;//Ind:el índice del arreglo
   verdad=0;
   for (Ind=1;Ind<=16;++Ind){
      do{//repetir para los equipos
         cout<<"Ingrese nombre del equipo n° "<<Ind<<" :";
         cin>>todos_equipos[Ind];
         bandera=Rex(todos_equipos,todos_equipos[Ind],Ind-1);//subprograma para verificar que ningun equipo tenga el mismo nombre
         if(bandera!=0){//bandera es el resultado de la funcion
            cout<<"Nombre de equipo no disponible"<<endl;
         }
      } while(todos_equipos[Ind]!=' '&& bandera!=0);
      do{//repetir para los grupos
         cout<<"Ingrese grupo al que pertenece el equipo (A,B,C ó D): ";
         cin>>grupo[Ind];
         if(grupo[Ind]=='A'|| grupo[Ind]=='B' || grupo[Ind]=='C' || grupo[Ind]=='D'){
            verdad=1;}                                                             
         else{                                                                     
            cout<<"Ingrese nombre de grupo válido."<<endl;
         }
         if(grupo[Ind]=='A'){//invoco para cada uno de los grupos
            banderaA=Numgrup(grupo,grupo[Ind],Ind-1);//Numgrup función para verificar que no haya mas de 4 equipos por grupos, funcionando :D !!!
            cout<<banderaA<<endl;
            if(banderaA==0){
               cout<<"El grupo A se encuentra lleno"<<endl;
            }   
         }
         if(grupo[Ind]=='B'){
            banderaB=Numgrup(grupo,grupo[Ind],Ind-1);
            cout<<banderaB<<endl;
            if(banderaB==0){
               cout<<"El grupo B encuentra lleno"<<endl;
            }   
         }
         if(grupo[Ind]=='C'){
            banderaC=Numgrup(grupo,grupo[Ind],Ind-1);
            cout<<banderaA<<endl;
            if(banderaC==0){
               cout<<"El grupo C se encuentra lleno"<<endl;
            }   
         }
         if(grupo[Ind]=='D'){
            banderaD=Numgrup(grupo,grupo[Ind],Ind-1);
            cout<<banderaA<<endl;
            if(banderaD==0){
               cout<<"El grupo D se encuentra lleno"<<endl;
            }   
         }
         if(banderaA!=0 && banderaB!=0 && banderaC!=0 && banderaD!=0){//EROR LÓGICO, si una bandera vale 0, todo el si es falso y salta el sino con grup=0, y salta el repetir.
            grup=1;              
         }
         else{
            grup=0;
         }
         cout<<grup<<endl;
      } while(verdad!=1 && grup!=1);
   }
}

int main(){//programa
   //acá nombré todas las operaciones que hay que realizar
   char grupo[16], todos_equipos[16];//subida de los grupos y el nombre de los equipos respectivamente
   int grupoA[6][6],grupoB[6][6],grupoC[6][6],grupoD[6][6];//esto es el resultado de los partidos (cosa no realizada,
   int octavos[4][4],semifinal[2][2],Final[1][1],Tercerlugar[1][1];//resultados de partidos
   CargadeDatos(grupo,todos_equipos);//subprograma: procedimiento de subida de datos
   
   return 0;
}

Beginner Web

#1
Yo validaria con un solo case, seria mas cortito el programa, preguntaria si cada pais ya existe o no, caso contrario agregarlo a uno de los arregloGrupo de forma aleatoria  ;-)
7w7