Título: Proyecto de 1° año Publicado por: Nixo en 8 Octubre 2018, 17:13 pm 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; } Título: Re: Proyecto de 1° año Publicado por: Beginner Web en 8 Octubre 2018, 17:39 pm 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 ;-)
|