• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pacfer

Por onde começar...

3 mensagens neste tópico

Meus caros,

Estou com um grave problema... Tenho um trabalho para entregar na faculdade e não sei por onde lhe pegar. Já dei voltas e voltas e nada. Se aguem me puder dar uma dica de como fazer isto, agradecia.

O protocolo é o seguinte:

Suponha que a federação de andebol promoveu um concurso público para a

apresentação de um programa que faça a gestão de todos os dados de um

campeonato. O vencedor do concurso ganha entradas grátis vitalícias para

todos os jogos dos campeonatos de andebol. Suponha que quer participar no

dito concurso e para tal tem de desenvolver um programa que, sabendo que

participam N equipas no campeonato:

• Faça o escalonamento de todos os jogos sabendo que todas as equipas

se têm de defrontar entre si (total de N-1 jornadas).

• Guarde o resultado de todos os jogos.

• Calcule a classificação final do campeonato.

REGRAS DO JOGO:

• Cada vitória vale 2 pontos, o empate 1 ponto e a derrota 0 pontos.

• Critérios de desempate:

1. Diferença de golos marcados e sofridos

2. Total de golos marcados

3. Sorteio

Com o objectivo de avaliar o desempenho do programa é pedido que o

mesmo gere aleatoriamente os resultados dos jogos do campeonato e os

apresente num ficheiro de dados organizados por jornada. É também pedido

que o programa mostre no ecrã a classificação final do campeonato

devidamente ordenada.

Parte 2:

Suponha que a federação de andebol alterou o formato do campeonato de

andebol e, consequentemente, acrescentou um novo requisito ao programa

de gestão do campeonato. No novo formato, após a 1ª fase do campeonato

(N-1 jornadas), as 8 equipas melhor classificadas são qualificadas para um

play-off para determinar o vencedor do campeonato. O play-off é composto

por jogos a eliminar e o escalonamento desses jogos é o seguinte:

Semttulo.jpg

O programa deve ser capaz de mostrar no ecrã todos os jogos do play-off

bem como a classificação final das 8 equipas que nele participaram.

Use, obrigatoriamente, uma árvore binária para modelar o play-off.

Agradecia que me pudessem ajudar ou dar alguma indicação de como fazer isto

Cheers

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo o que tenho até este momento é o seguinte:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#define NUMJOGOS 28
#define NUMEQP 8

typedef struct equipa{
char nome [50];
int gmarcados, gsofridos, vitorias, empates, derrotas;
}EQP;

typedef struct info{
char equipa_a[50];
char equipa_b[50];
int numGolos_a,numGolos_b;
int joo;
}jogos;

//void IntroduzirEquipas (EQP *e);
//void EscreverEquipas (EQP *e);
//void menu(EQP *e, jogos *j,int size);
int lerequipas (EQP *e);
void escreverescalonamento (jogos *j, int size);
//void resultados(void);
int golos(jogos *j);
void CalcJogos(EQP * e, jogos * j);

void main()
{
EQP *e;
jogos *j;

e=(EQP*) malloc(8*sizeof(EQP));
int x, size;

j=(jogos*) malloc(28*sizeof(jogos));


srand(time(NULL));
x = rand() % 25 + 1;
//x = 100 * (rand()/(RAND_MAX + 1.0));
//int numero=rand();
//printf("%2.d\n", numero);

system ("pause");

char op;

/*printf("\n");

printf("\n1 - Introduzir equipas");


printf ("\n");

op = getch ();
	switch (op)
	{

	case '1': IntroduzirEquipas(e);
	break;


	}*/

if ((size = lerequipas (e))!= 0)
{
 //printf("\n2 - Guardar equipas em ficheiro");
printf("\n3 - Quais os resultados dos jogos de uma equipa?");
printf("\n4 - numero de golos?");
printf("\n5 - sair");

printf("\n");

	op = getch ();
	switch (op)
	{
	//case '2': EscreverEquipas(e);
	//break;
	case '3': CalcJogos(e,j);
	break;
	case '4': golos(j);
	break;

	}
escreverescalonamento (j,size);
}
else
	printf ("erro na leitura dos dados\n");
}


/*void IntroduzirEquipas (EQP *e)
{
int numero,i;
printf("Introduza o numero de equipas que deseja: ");
scanf("%d", &numero);
for (i=0;i<numero;i++){
	printf("Introduza a equipa %d: ",i+1);
	scanf ("%s", &(e[i].nome));
}
}

void EscreverEquipas (EQP *e)
{
int i, size = 0;

FILE *fp;

if ((fp = fopen ("equipas.txt", "w"))!= NULL)
{
	for (i=0; i<size; i++)
		fprintf (fp, "%s,\n", &(e[i].nome));
	printf ("ficheiro criado com sucesso\n");
}
else
	printf ("erro na criacao do ficheiro de saida\n");
}*/

int lerequipas (EQP *e)
{
FILE *fp;
int size = 0;
if ((fp = fopen ("equipas.txt", "r"))!= NULL)
{
	while (! feof (fp))
	{
		fscanf (fp,"%s", &(e[size].nome));
		size++;
	}
	fclose (fp);
}
return (size);
}

void escreverescalonamento (jogos *j, int size)
{
int i;

FILE *fp;

if ((fp = fopen ("escalonamento.txt", "w"))!= NULL)
{
	for (i=0; i<size; i++)
		fprintf (fp, "%s, %s, %d, %d\n", j[i].equipa_a,j[i].equipa_b,j[i].numGolos_a,j[i].numGolos_b);
	printf ("ficheiro criado com sucesso\n");
}
else
	printf ("erro na criacao do ficheiro de saida\n");
}


/*void downloadInfo(void)
{
int i;
FILE *fp;
fp = fopen("Equipas.txt", "r");
for (i=0; i<NUMJOGOS; i++){
 if(fread(&j[i], sizeof(struct info), 1, fp) != 1)
  if(feof(fp)) {
   fclose(fp);
   return;
  }
  else {
   puts ("ERRO DE LEITURA");
   fclose(fp);
   return;
  }
}
}*/


int golos(jogos *j)
{
int i,count=0;


for(i=0; i<NUMJOGOS; i++){
 count = count + ( j[i].equipa_a,j[i].equipa_b,j[i].numGolos_a,j[i].numGolos_b);
}
return (count);
printf("\n\n\tForam marcados %d golos neste campeonato!\n", count);
}

/*int RandomInteger (int low, int high)
{
   int i;
   double d;
   d = (double) rand () / ((double) RAND_MAX + 1);
   i = d * (high - low + 1);
   return low + i;
}*/

/**************************************************
* Resultados duma dada selecção.
*/
/*void resultados(void)
{
int i,k;

printf("\n\n* * * Resultados das equipas");
for(i=0; i<NUMJOGOS; i++){
 if(jogos[i].nome == equipa_b)
  printf("\n'%s' - '%s': %s : %d - %d", j[i].equipa_a, j[k].equipa_b, j[i].resultado, j[k].resultado);
}
printf("\nFim de Listagem!\n");
}*/

void CalcJogos(EQP * e, jogos * j)
{
int i,k,z=0;
int joo;


 for(i=0; i<NUMEQP; i++)
 for(k=0; k<NUMEQP; k++)


{

	if(e[i].nome != e[k].nome)
	{
		strcpy(j[z].equipa_a,e[i].nome);
		strcpy(j[z].equipa_b,e[k].nome);
		j[z].numGolos_a = rand() % 7;
		j[z].numGolos_b = rand() % 7;
		z++;
	}

 }

}

Mas não está a funcionar... :( Nem sei se é a melhor maneira de o fazer...

Ajuda precisa-se

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora