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);
	

}
Exemple #2
0
int main()
{
	
  estrelas=(dados*)malloc(sizeof(dados)*(n_linhas()+1)); //aloca memoria necessaria para carregar todos os dados do ficheiro
  
  preenche_tabela(); //preenche a tabela na inicializacao do programa
  
  char opcao;
  
  do //ciclo que so termina se o utilizador introduzir x ou X
    {
	    
      printf("\n\nMostrar o conteudo da tabela....1\n");
      printf("Acrescentar uma estrela.........2\n");
      printf("Corrigir dados de uma estrela...3\n");
      printf("Ordenar por massa...............4\n");
      printf("Ordenar por nome................5\n");
      printf("Ordenar por constelacao.........6\n");
      printf("Sair............................x\n");
      
      opcao=getchar();
      getchar();
      
      if (opcao=='x' || opcao=='X')
	exit (2);
      else
	switch (opcao)
	  {
	  case '1': imprime_tabela(); break;
	  case '2': insere_estrela(); break;
	  case '3': corrige_dados(); break;
	  case '4': ordena_massa(); break;
	  case '5': ordena_nome(); break;
	  case '6': ordena_constelacao();break;
	  default : {printf("Opcao incorrecta");while(getchar()!='\n');};
	  }
	  
    }while(opcao!='x' || opcao!='X');
  
  return 0;
  
}
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);	
}