/*Checa se ja existe um time com o nome informado, se sim retorna a sua posicao *se nao, retorna a ultima posicao que esta livre para ser escrita */ void busca_time(Caracteristicas time[], char nome_time[],int *posicao){ int i, acabou = 0; for(i = 0; i < QUANTIDADEdeTIMES && !acabou; i++){ if(strcmp(nome_time, time[i].nome) == 0){ *posicao = i; acabou = 1; }else if(strcmp("NAOHA", time[i].nome) == 0){ insere_time(time, i, nome_time); *posicao = i; acabou = 1; } } }
void armazena_vitoria(entrada* vetor, time* campeonato, time* times_camp, int *i, int* quant_times, int* quant_times_jogaram){ int j=0, pos1=0, pos2=0, posic1=0, posic2=0; time time_a, time_b; //Verificar os times que jogaram. strcpy(time_a.nome, vetor[*i].elemento2); strcpy(time_b.nome, vetor[*i].elemento3); posic1= consulta_time(time_a, times_camp, quant_times); posic2= consulta_time(time_b, times_camp, quant_times); if(posic1!=-1){ time_a.pontuacao= times_camp[posic1].pontuacao; pos1= verifica_ranking(time_a, campeonato, quant_times_jogaram); } if(posic2!=-1){ time_b.pontuacao= times_camp[posic2].pontuacao; pos2= verifica_ranking(time_b, campeonato, quant_times_jogaram); } //Caso o time vencedor tenha feito sua primeira partida no campeonato e não tenha sido citado anteriormente na entrada, ele será inserido na competição e no vetor para consulta. if(posic1== -1){ insere_time(time_a, campeonato, quant_times_jogaram); insere_time(time_a, times_camp, quant_times); pos1= (*quant_times_jogaram); posic1= (*quant_times); } //Caso o time perdedor tenha feito sua primeira partida no campeonato e não tenha sido citado anteriormente na entrada, ele será inserido na competição e no vetor para consulta. if(posic2== -1){ insere_time(time_b, campeonato, quant_times_jogaram); insere_time(time_b, times_camp, quant_times); pos2= (*quant_times_jogaram); posic2= (*quant_times); } //Caso o time vencedor tenha feito sua primeira partida no campeonato, mas já tenha sido citado anteriormente na entrada, ele será inserido na competição apenas. if(pos1== -1){ insere_time(time_a, campeonato, quant_times_jogaram); pos1= (*quant_times_jogaram); } //Caso o time perdedor tenha feito sua primeira partida no campeonato, mas já tenha sido citado anteriormente na entrada, ele será inserido na competição apenas. if(pos2== -1){ insere_time(time_b, campeonato, quant_times_jogaram); pos2= (*quant_times_jogaram); } //Modificar a pontuação dos times que jogaram. modifica_pontuacao(times_camp, posic1, 3, posic2, 0); modifica_pontuacao(campeonato, pos1, 3, pos2, 0); //Reordenar a classificação do campeonato. ordena_ranking(campeonato, *quant_times_jogaram); for(j=1; j<= *quant_times_jogaram; j++){ campeonato[j].ranking=j; } //Reordenar o vetor que contém os times em ordem alfabética. ordena_nome(times_camp, *quant_times, campeonato); }
void operacao_consulta(FILE* saida, entrada *vetor, time* campeonato, time* times_camp, int *i, int* quant_times, int* quant_times_jogaram){ char *rank="RANKING", *pont="PONTUACAO"; int pos1=0, posic1=0; char *info2; time time_a; //Verificar o time a ser consultado. strcpy(time_a.nome, vetor[*i].elemento3); posic1= consulta_time(time_a, times_camp, quant_times); //Se o time for novo, inserir o time no vetor. if(posic1== -1){ insere_time(time_a, times_camp, quant_times); posic1= (*quant_times); times_camp[posic1].ranking= (*quant_times_jogaram)+1; } //Verificar o tipo de consulta solicitada. info2= vetor[*i].elemento2; //Caso a consulta seja ao ranking do time. if(strcmp(info2, rank)==0){ //Se o time já jogou, verifica a posição no ranking pelo vetor ordenado por ranking. if(times_camp[posic1].flag_jogou==1){ time_a.pontuacao= times_camp[posic1].pontuacao; pos1= verifica_ranking(time_a, campeonato, quant_times_jogaram); fprintf(saida, "RANKING,%s,%d\n", campeonato[pos1].nome, campeonato[pos1].ranking); } //Se o time não jogou ainda, seu ranking é N+1. else fprintf(saida, "RANKING,%s,%d\n", times_camp[posic1].nome, times_camp[posic1].ranking); } //Caso a consulta seja à pontuação do time. else if(strcmp(info2, pont)==0){ fprintf(saida, "PONTUACAO,%s,%d\n", times_camp[posic1].nome, times_camp[posic1].pontuacao); } //Validação da entrada. else{ printf("ENTRADA INVÁLIDA! Se vai fazer consulta, o segundo campo da linha deve ser RANKING ou PONTUACAO.\n"); exit(0); } //Reordenar o vetor que contém os times em ordem alfabética. ordena_nome(times_camp, *quant_times, campeonato); }