eu estou desenvolvendo um programa em C que simula uma partida de futebol para 7 jogadores e já consegui terminar o jogo e no caso de haver um vencedor, o programa faz tudo bem mas o problema está em caso de empate entre 4 jogadores jogadores por exemplo:
desenvolvi uma função que serve para listar os 7 jogadores por números de golo e
/*Função para listar quantidade de remates entre jogadores*/
void listar_jogador_num_golos_jogo(void) {
int s;
puts("\n\t\t--- Estatisticas de Golos dos Jogadores no Jogo ---");
//para todos os jogadores
for (s = 0; s < qt_jogador_jogo; s++) {
printf("\t\t\t Jogador %d: %d golo(s)\n", ptr_campo_jogo->jogadores[s].num_jogador,
ptr_campo_jogo->jogadores[s].estatistica.qt_golos_marcados);
}
sleep(1);
//determina o vencedor ou prolongamento em caso de empate
definir_vencedor_ou_empate_jogo();
}
faz exactamente o que pretendido pelo enunciado, tal como mostra a figura
e desenvolvi uma outra função que determina o jogador vencedor ou em caso de empate, o jogador seleccionado irá fazer parte do prolongamento
/*Função que determina o vencedor ou prologamento em caso de empate*/
void definir_vencedor_ou_empate_jogo(void) {
int j, k, m, t;
contador_jogadores_jogo = 0;
max_golo_jogo = 0;
puts("\n Determinar o jogador vencedor ou em caso empate, irá ao prolongamento...\n");
sleep(1);
//para todos os jogadores
for (j = 0; j < qt_jogador_jogo; j++) {
//se o jogador listado tiver mais golos marcados do que max
if (ptr_campo_jogo->jogadores[j].estatistica.qt_golos_marcados > max_golo_jogo) {
//max = golos do jogador
max_golo_jogo = ptr_campo_jogo->jogadores[j].estatistica.qt_golos_marcados;
//contador será igual a um
contador_jogadores_jogo = 1;
//se tiver os mesmo golos que max
} else if (ptr_campo_jogo->jogadores[j].estatistica.qt_golos_marcados == max_golo_jogo) {
//incrementa o contador
contador_jogadores_jogo++;
}
}//se contador for igual a um
if (contador_jogadores_jogo == 1) {
//para todos os jogadores
for (k = 0; k < qt_jogador_jogo; k++) {
//se o jogador listado tiver mais do que max golos
if (ptr_campo_jogo->jogadores[k].estatistica.qt_golos_marcados == max_golo_jogo) {
//o jogador iterado é o vencedor
printf(">> Jogador %d é o VENCEDOR marcando %d golo(s)...\n\n",
ptr_campo_jogo->jogadores[k].num_jogador,
ptr_campo_jogo->jogadores[k].estatistica.qt_golos_marcados);
sleep(1);
}
}//caso contrário (contador diferente de um)
} else {
//iterar todos os jogadores
for (m = 0; m < qt_jogador_jogo; m++) {
//se os golos do jogador listado for igual a max
if (ptr_campo_jogo->jogadores[m].estatistica.qt_golos_marcados == max_golo_jogo) {
//o jogador iterado faz parte do prolongamento
printf(">> Jogador %d marcou %d golo(s) e vai para PROLONGAMENTO...\n", ptr_campo_jogo->jogadores[m].num_jogador,
ptr_campo_jogo->jogadores[m].estatistica.qt_golos_marcados);
sleep(1);
}
}
puts("\n\t\t--- Lista de Jogadores para Prolongamento em situação de empate ---");
//iterar todos os jogadores
for (t = 0; t < qt_jogador_jogo; t++) {
//se os golos do jogador listado for igual a max
if (ptr_campo_jogo->jogadores[t].estatistica.qt_golos_marcados == max_golo_jogo) {
//o jogador iterado faz parte da lista de jogadores para prolongamento
listar_jogadores_para_prolongamento(ptr_campo_jogo->jogadores[t].num_jogador, contador_jogadores_jogo);
}
}
}
}
e até aqui tudo bem, e o programa mostra o resultado pretendido, tal como mostra na figura em baixo
e o problema começa aqui em usar apenas esses jogadores seleccionados? para iniciar o prolongamento...
/*Função*/
void iniciar_prolongamento(void) {
int j;
srand(time(NULL));
int recebe_bola = 1 + rand() % qt_jogador_jogo;
for (j = 0; j < qt_jogador_jogo; j++) {
if ((recebe_bola == ptr_campo_jogo->jogadores[j].estatistica.qt_golos_marcados)
&&(ptr_campo_jogo->jogadores[j].estatistica.qt_golos_marcados == max_golo_jogo)) {
printf("\nMostra o jogador %d...\n", recebe_bola);
}
sleep(1);
}
}
quando compilo, mostra todos os jogadores, e já pensei em guardar essa lista de jogadores para prolongamento em um apontador externo e também pensei em usar um vetor campo com 3 dimensoes guardar jogadores, para jogo, prolongamento e penalti
struct CAMPO campos[3]; /*campo de jogo, prolongamento e penalti*/
struct CAMPO *ptr_campo_jogo; /*apontador para campo*/
Pergunta
zion33
E aí pessoal beleza,
eu estou desenvolvendo um programa em C que simula uma partida de futebol para 7 jogadores e já consegui terminar o jogo e no caso de haver um vencedor, o programa faz tudo bem mas o problema está em caso de empate entre 4 jogadores jogadores por exemplo:
desenvolvi uma função que serve para listar os 7 jogadores por números de golo e
faz exactamente o que pretendido pelo enunciado, tal como mostra a figura
e desenvolvi uma outra função que determina o jogador vencedor ou em caso de empate, o jogador seleccionado irá fazer parte do prolongamento
e até aqui tudo bem, e o programa mostra o resultado pretendido, tal como mostra na figura em baixo
e o problema começa aqui em usar apenas esses jogadores seleccionados? para iniciar o prolongamento...
quando compilo, mostra todos os jogadores, e já pensei em guardar essa lista de jogadores para prolongamento em um apontador externo e também pensei em usar um vetor campo com 3 dimensoes guardar jogadores, para jogo, prolongamento e penalti
alguma sugestão?
tive que reescrever o codigo
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.