Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gator_27

Bolão copa para segunda fase.

Recommended Posts

Olá bom Dia!

Estou fazendo um exercício que que devo Criar uma estrutura em linguagem C para um bolão da segunda fase da copa do mundo.
como deste site http://bolaosportv.globo.com/

#include <stdio.h>
#include<stdlib.h>
#include<string.h>

struct Bolao{
    char selecao [100];
    char fase [30];
    int gols_aposta_1, gols_aposta_2;//As variáveis do tipo gols_aposta representam os gols da aposta do participante do bolao
    int gols_real_1, gols_real_2; //As variáveis do tipo gols_real representam os gols que realmente aconteceram na partida
   
    //int pontos;
    //int gols_total;
    //int gols_saldo;
    
    
};


int main (){
    
    struct Bolao Copa [5];
    int i;
    
    for(i=0; i < 5; i++){
        printf("\n\tInforme o nome da selecao: ");
        gets(Copa[i].selecao);
    
    
    }
    
}

 

a minha dúvida é de como montar a estrutura para fazer Brasil x Chile com a quantidade de gols de cada um time .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma idéia bem simples seria, fazer uma matriz com índice e colocar todas as informações nela.

 

Exemplo:

Copa[50][5]

 

Sendo 50 partidas jogadas (chutei um valor. não sem quantas partidas tem a copa) contendo 5 informações básicas por partida, que são: data (timestamp), time A (indexado), time B (indexado), resultado do time A, resultado do time B.

 

Na prática:

Na prática:
Copa[0][0] = 1265464 // timestamp
Copa[0][1] = 0 // Brasil
Copa[0][2] = 1 // Chile
Copa[0][3] = 1 // Quantidade de gols do Brasil
Copa[0][4] = 0 // Quantidade de gols do Chile

Copa[1][0] = 123354325 // timestamp
Copa[1][1] = 2 // Uruguai
Copa[1][2] = 3 // Colômbia
Copa[1][3] = 2 // Quantidade de gols do Urugai
Copa[1][4] = 3 // Quantidade de gols do Colômbia

[continua...]

Matriz dos times:
Paises[20][30] // Total de 20 países (chutei a quantidade de países participando da copa) com limite de 30 caracteres para cada nome.
               // Ela será a referência para informar qual país se trata o índice na matriz "Copa".

Paises[0] // Adicionar o nome do Brasil
Paises[1] // Adicionar o nome do Chile
Paises[2] // Adicionar o nome do Uruguai
Paises[3] // Adicionar o nome do Colômbia
[continua...]

Espero que ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz como o código abaixo

Agora tenho que fazer a leitura de cada seleção separadamente e ter uma struct para cada fase da copa (oitavas de finais, quartas de finais, semi final e final)

	#include <stdio.h>
	#include<stdlib.h>
	#include<string.h>

	 struct BOLAO{
	         char selecao[100],nomeApostador[100];
	         int golsTime1, golsTime2,resulTime1,resultTime2;
	         float valorAposta;    	         	         
	};
	
	
	int menu();
	
			
	int main(){
	    struct BOLAO bol[3];
	    int opc,contA = 0, contR = 0, opcR;
	    	
	do{
		opc = menu();
		switch(opc){
		case 1:
		
			if(contA < 3){
				getchar();
				printf("\n\tInforme o nome das selecoes: ");
				gets(bol[contA].selecao);
				printf("\n\tinforme o nome do apostador: ");
				gets(bol[contA].nomeApostador);
				printf("\n\tinforme o seu palpite para o time 1: ");
				scanf("%d",&bol[contA].golsTime1);
				printf("\n\tinforme o seu palpite para o time 2: ");
				scanf("%d",&bol[contA].golsTime2);
				//printf("\n\tinforme o valor da aposta: ");
				//scanf("%f",&bol[contA].valorAposta);
				bol[contA].resulTime1 = 0;
				bol[contA].resultTime2 = 0;
				
				contA++;
			}
			else{
					printf("\n\tBolao completo:");
					getchar();
			}
	    break;
	    case 2:
	         	if(contR < 3 && contA > 0){
	         			printf("\n\tInfomorme o resultado do jogo das selecoes: %s\n", bol[contR].selecao);
	         			printf("\n\tDo Apostador: %s\n", bol[contR].nomeApostador);
	         			printf("\n\tResultado do time 1:");
	         			scanf("%d",&bol[contR].resulTime1);
	         			printf("\n\tResultado do time 2: ");
	         			scanf("%d",&bol[contR].resultTime2);
	         	
	         	}else{
	         		 printf("\n\tNAo tem resultado para informar");
	         	}
	    break;
	    case 3:
	         	printf("Sair");
				getchar();	 
	    break;
	         	
	    default:
	            printf("\n\topcao %d invalida\n",opc);
	            getchar();
	    break;
	    }
	}while(opc != 4);   
	 
	}
	
	int menu(){
	    int opc;
	    system("cls");
	      printf("\n\t\t\tCADASTRO DO BOLAO\n\n"
	 			 "\t1 - Cadastrar\n"
	          	 "\t2 - Digitar Resultado\n"
	           	"\t3 - Sair\n\n"
	  "\tPor favor, selecione uma opcao: ");
	    scanf("%d", &opc);
	    return opc;
	}
	
	

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aconselho criar duas 'struct', sendo uma para as partidas e outra para armazenar os palpites.

 

Na 'struct' das partidas, crie uma referencia para a 'struct' dos palpites.

Exemplo:

     struct BOLAO
     {
          char apostador[100]
          int apostaSelecaoA;
          int apostaSelecaoB;
          float apostaValor;
     };
 
     struct PARTIDA
     {
          char selecaoA[100];
          char selecaoB[100];
          int golsSelecaoA;
          int golsSelecaoB;
          struct BOLAO bol[3];
     };

Dessa forma, você pode armazenar os dados de maneira mais organizada.

Para criar criar as etapas dos jogos, basta montar uma lista da "struct PARTIDA" contendo a quantidade de jogos que haverão em cada etapa.

 

Não testei o código. Mas a idéia é essa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá estou precisando de ajuda para desenvolver este raciocínio.

 

Aqui temos que usar o mesmo conceito de banco de dados.

quantos bolão vamos ter, vai ter muitos cadastro no bolão para a mesma partida.
E a partida vai ter uma somente.
Então o criamos uma referência, da struct partida, na do BOLÃO, ou um iD uma variavel, só para
saber de qual partida foi..
Cria um menu, para cadastrar, dai chama outro menu..
tem opção de cadastrar bolao ou partida..
dai tem uma lógica em cima, de verificar não deixando cadastrar duas vezes a mesma partida entre outras coisas..
e no bolão na hora de cadastrar as informações, mostra as partidas cadastradas já. dai escolhe uma partida, pelo um número.
e o struct fica referenciado com uma partida válida que já foi cadastrada.
no menu mesmo, podem colocar uma opção de encerrar bolao.
dai a fase termina, e o bolao e encerrado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente.

Qual o ponto mais relevante aí? A partida, correto?

Sem partida, não existe bolão.

Por isso criei a referencia do bolão dentro da partida.

 

Se a partida foi criada, estou considerando que ela seja válida, permitindo assim, associar o bolão à ela.

Partindo desse princípio, basta você verificar o resultado da partida e, posteriormente, validar os ganhadores do bolão.

 

Sobre a questão de controlar como fará a busca da partida, poderá criar um vetor de armazenamento das partidas, tendo como referencia a data e a ordem da partida no dia. Por exemplo: "20140702_1" para a data e primeiro jogo de hoje.

 

Pode criar um vetor para cada etapa do jogo (oitavas de final, quartas de final, semi-final e final) e criar uma struct com referência para as etapas dos jogos, permitindo assim que possa fazer bolão por etapas, também. Se for o caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites
cadastrar as partidas primeiro, dai para fazer o bolão..

igual agora, já estão definidas todas as partidas da quarta de final.

cadastra todas elas, e vai fazendo bolão, e chamando uma referencia da partida dentro do bolao.

dai com a opção encerrar o bolão, dai agente acessa o struct da partida de novo e modifica ela, e adicionando

um resultado, e depois faz verificar os vencedores..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá estou precisando de ajuda para termina este trabalho.

 

Um bolão de prognóstico é aquele no qual cada apostador indica qual será o resultado de um evento futuro, que podem ir do placar de uma partida desportiva ao número de votos de um candidato numa eleição. Também ocorre no caso de um campeonato, em que se aposta quais equipes passarão para uma fase seguinte (http://pt.wikipedia.org/wiki/Bol%C3%A3o_(aposta)).

Aproveitando o “clima de Copa”, na construção de um programa que simule um bolão da Copa.Este programa vai permitirao usuário inserir seus palpites para as oitavas, quartas, semifinais e a final.
Serão necessários os seguintes arquivos:
. times.cpm (contém os times classificados para as oitavas de final);
. oitavas.cpm (armazenará os palpites das oitavas de final);
. quartas.cpm (armazenará os palpites das quartas de final);
. semis.cpm (armazenará os palpites das semifinais);
. final.cpm (armazenará os palpites para a final);
. resultados.cpm (armazenará os resultados oficiais de todas as etapas).

Nesta etapa do trabalho, deve ser construído um menu de opções que permita ao usuário:
1 - Cadastrar Times Classificados (para as oitavas de final);
2 - Criar os Emparceiramentos (para as oitavas de final e seguintes);
3 - Cadastrar Palpites (para as oitavas de final e seguintes);
4- Relatórios.
Estes arquivos serão criados pelo programa que vai ser desenvolvido. Por exemplo: o arquivo times.cpm vai armazenar os times classificados para as oitavas de final. Ou seja, o programa vai permitir ao usuário cadastrar os times classificados para as oitavas de final neste arquivo times.cpm.

Os arquivos.cpm é um arquivo físico que receberá a gravação/edição de registros (structs).

Obs: A função main() deve conter somente as chamadas para as demais funções;
Área de anexos
Visualizar o anexo Bolao.cpp
cleardot.gif
icon_1_text_x16.png
#include <stdio.h>
#include<stdlib.h>
#include<string.h>


 struct BOLAO{
         char nomeApostador[100];
         int golsTime1, golsTime2,resulTime1,resultTime2, id_jogo;
         float valorAposta;    
         
         
};
struct JOGO{
         char selecao1[100], selecao2[100];
         int golTime1, golTime2;
         int id;
         
         
};
struct JOGO cadastroJogo(int id);
struct BOLAO cadastroBolao(int id_jogo);

int contJogo = 0;

int menu();
int menuCadastro();

int main(){
    struct BOLAO bol[3];//Para estância de uma estrutura, precisa chamar o nome da Struct e dar um nome colocando num vetor.bol[3] temos que criar uma variavel global para aumentar de acordo com o cadastro, e ficar infinito o tamanho não somente com 3
    struct JOGO jogo[16];// jogo[16],na segunda fase só tem 16 jogos, então podemos deixar cadastrar mais que  o limite de jogos, se não, não vai ser um segunda fase igual da copa do mundo
    int opc,opCad, contA = 0, contR = 0, opcR, i, contB = 0, id_jogo;
    do{
	 	opc = menu();
	 	 switch(opc){
         	case 1:	 	
			 	
			 	do{
			 		opCad = menuCadastro();
			 		switch(opCad){
			 			case 1:
			 				if(contJogo < 16){
			 					
			 					if(contJogo >= 0 && contJogo <=7){
			 							printf("\n\tOitavas de finais\n");
			 							jogo[contJogo] = cadastroJogo(contJogo);
			 							
			 					}
			 					else if(contJogo >= 8 && contJogo <=11){
			 						printf("\n\tQuartas de finais\n");	
									 jogo[contJogo] = cadastroJogo(contJogo);		 						
			 					}
			 					else if(contJogo >= 12  && contJogo <=13){
			 						printf("\n\tSemi finais\n");
			 						jogo[contJogo] = cadastroJogo(contJogo);
			 					}
			 					else if(contJogo >= 14 && contJogo <=15){
			 						printf("\n\tFinal e terceiro lugar\n");
			 						jogo[contJogo] = cadastroJogo(contJogo);
			 						
			 					}
			 					contJogo++;
			 				}else{
			 					printf("\n\tAcabou os jogos\n");
			 				}
			 				
			 			break;
			 			case 2:
			 				if(contJogo > 0){
			 					printf("\n\tEscolha o jogo para fazer o bolao: \n");
			 					for(i = 0; i < contJogo; i++){
			 						printf("\n\tId: %d\n",jogo[i].id);
			 						printf("\n\t%s X %s",jogo[i].selecao1, jogo[i].selecao2);
			 						printf("\n\n");
			 						
			 					}	
			 					
			 					printf("\n\tInforme o id do jogo: ");
			 					scanf("%d",&id_jogo);
			 					bol[contB] = cadastroBolao(id_jogo);
			 					
			 					
			 					
			 				}
			 				else{
			 					printf("\n\tNenhum jogo cadastrado.");
			 				}
			 			break;
			 			default:
               				printf("\n\topcao %d invalida\n",opc);
               				getchar();
          				break;
          				
			 		}
			 		getchar();
			 		
			 	}while(opCad != 3);
			 	
			 	
			 	
			 	
         	break;
         	case 2:
         		
         	break;
         	case 3:
         			printf("Sair");
					 getchar();	 
         	break;
         	
         	default:
               printf("\n\topcao %d invalida\n",opc);
               getchar();
          	break;
      	  }
	 }while(opc != 3);   
	 
}

int menu()
{
    int opc;
    system("cls");
      printf("\t\t\tCADASTRO DO BOLAO\n\n"
		   "\t1 - Cadastrar \n"
           "\t2 - Digitar Resultado\n"
           "\t3 - Sair\n\n"
		   "\tPor favor, selecione uma opcao: ");
    scanf("%d", &opc);
    return opc;
}
int menuCadastro()
{
    int opc;
    system("cls");
      printf("\t\t\tCADASTRO DO BOLAO\n\n");
	  printf("\t1 - Cadastrar Jogo\n"
           "\t2 - Fazer bolao\n"
           "\t3 - Sair\n\n"
		   "\tPor favor, selecione uma opcao: ");
    scanf("%d", &opc);
    return opc;
}
struct JOGO cadastroJogo(int id){
	struct JOGO jogo;
	getchar();
	printf("\n\tInforme o nome das selecao 1: ");
	gets(jogo.selecao1);
	printf("\n\tInforme o nome das selecao 2: ");
	gets(jogo.selecao2);
	printf("\n\tInforme o placar do time 1: ");
	scanf("\n\t%d",&jogo.golTime1);
	printf("\n\tInforme o placar do time 2: ");
	scanf("\n\t%d",&jogo.golTime2);
	jogo.id = id+1;
	
	return jogo;
	
}
struct BOLAO cadastroBolao(int id_jogo){
	struct BOLAO bol;
	getchar();
	printf("\n\tinforme o nome do apostador: ");
	gets(bol.nomeApostador);
	printf("\n\tinforme  o seu palpite para o time 1: ");
	scanf("\n\t%d",&bol.golsTime1);
	printf("\n\tinforme  o seu palpite para o time 2: ");
	scanf("\n\t%d",&bol.golsTime2);
	bol.id_jogo = id_jogo;
	
	return bol;
	
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Olá estou precisando de ajuda para termina este trabalho.

 

Um bolão de prognóstico é aquele no qual cada apostador indica qual será o resultado de um evento futuro, que podem ir do placar de uma partida desportiva ao número de votos de um candidato numa eleição. Também ocorre no caso de um campeonato, em que se aposta quais equipes passarão para uma fase seguinte (http://pt.wikipedia.org/wiki/Bol%C3%A3o_(aposta)).

 

Aproveitando o “clima de Copa”, na construção de um programa que simule um bolão da Copa.Este programa vai permitirao usuário inserir seus palpites para as oitavas, quartas, semifinais e a final.

Serão necessários os seguintes arquivos:
. times.cpm (contém os times classificados para as oitavas de final);
. oitavas.cpm (armazenará os palpites das oitavas de final);
. quartas.cpm (armazenará os palpites das quartas de final);
. semis.cpm (armazenará os palpites das semifinais);
. final.cpm (armazenará os palpites para a final);
. resultados.cpm (armazenará os resultados oficiais de todas as etapas).

 

Nesta etapa do trabalho, deve ser construído um menu de opções que permita ao usuário:

1 - Cadastrar Times Classificados (para as oitavas de final);
2 - Criar os Emparceiramentos (para as oitavas de final e seguintes);
3 - Cadastrar Palpites (para as oitavas de final e seguintes);
4- Relatórios.
Estes arquivos serão criados pelo programa que vai ser desenvolvido. Por exemplo: o arquivo times.cpm vai armazenar os times classificados para as oitavas de final. Ou seja, o programa vai permitir ao usuário cadastrar os times classificados para as oitavas de final neste arquivo times.cpm.

 

Os arquivos.cpm é um arquivo físico que receberá a gravação/edição de registros (structs).

 

Obs: A função main() deve conter somente as chamadas para as demais funções;

Área de anexos
Visualizar o anexo Bolao.cpp
cleardot.gif
icon_1_text_x16.png
#include <stdio.h>
#include<stdlib.h>
#include<string.h>


 struct BOLAO{
         char nomeApostador[100];
         int golsTime1, golsTime2,resulTime1,resultTime2, id_jogo;
         float valorAposta;    
         
         
};
struct JOGO{
         char selecao1[100], selecao2[100];
         int golTime1, golTime2;
         int id;
         
         
};
struct JOGO cadastroJogo(int id);
struct BOLAO cadastroBolao(int id_jogo);

int contJogo = 0;

int menu();
int menuCadastro();

int main(){
    struct BOLAO bol[3];//Para estância de uma estrutura, precisa chamar o nome da Struct e dar um nome colocando num vetor.bol[3] temos que criar uma variavel global para aumentar de acordo com o cadastro, e ficar infinito o tamanho não somente com 3
    struct JOGO jogo[16];// jogo[16],na segunda fase só tem 16 jogos, então podemos deixar cadastrar mais que  o limite de jogos, se não, não vai ser um segunda fase igual da copa do mundo
    int opc,opCad, contA = 0, contR = 0, opcR, i, contB = 0, id_jogo;
    do{
	 	opc = menu();
	 	 switch(opc){
         	case 1:	 	
			 	
			 	do{
			 		opCad = menuCadastro();
			 		switch(opCad){
			 			case 1:
			 				if(contJogo < 16){
			 					
			 					if(contJogo >= 0 && contJogo <=7){
			 							printf("\n\tOitavas de finais\n");
			 							jogo[contJogo] = cadastroJogo(contJogo);
			 							
			 					}
			 					else if(contJogo >= 8 && contJogo <=11){
			 						printf("\n\tQuartas de finais\n");	
									 jogo[contJogo] = cadastroJogo(contJogo);		 						
			 					}
			 					else if(contJogo >= 12  && contJogo <=13){
			 						printf("\n\tSemi finais\n");
			 						jogo[contJogo] = cadastroJogo(contJogo);
			 					}
			 					else if(contJogo >= 14 && contJogo <=15){
			 						printf("\n\tFinal e terceiro lugar\n");
			 						jogo[contJogo] = cadastroJogo(contJogo);
			 						
			 					}
			 					contJogo++;
			 				}else{
			 					printf("\n\tAcabou os jogos\n");
			 				}
			 				
			 			break;
			 			case 2:
			 				if(contJogo > 0){
			 					printf("\n\tEscolha o jogo para fazer o bolao: \n");
			 					for(i = 0; i < contJogo; i++){
			 						printf("\n\tId: %d\n",jogo[i].id);
			 						printf("\n\t%s X %s",jogo[i].selecao1, jogo[i].selecao2);
			 						printf("\n\n");
			 						
			 					}	
			 					
			 					printf("\n\tInforme o id do jogo: ");
			 					scanf("%d",&id_jogo);
			 					bol[contB] = cadastroBolao(id_jogo);
			 					
			 					
			 					
			 				}
			 				else{
			 					printf("\n\tNenhum jogo cadastrado.");
			 				}
			 			break;
			 			default:
               				printf("\n\topcao %d invalida\n",opc);
               				getchar();
          				break;
          				
			 		}
			 		getchar();
			 		
			 	}while(opCad != 3);
			 	
			 	
			 	
			 	
         	break;
         	case 2:
         		
         	break;
         	case 3:
         			printf("Sair");
					 getchar();	 
         	break;
         	
         	default:
               printf("\n\topcao %d invalida\n",opc);
               getchar();
          	break;
      	  }
	 }while(opc != 3);   
	 
}

int menu()
{
    int opc;
    system("cls");
      printf("\t\t\tCADASTRO DO BOLAO\n\n"
		   "\t1 - Cadastrar \n"
           "\t2 - Digitar Resultado\n"
           "\t3 - Sair\n\n"
		   "\tPor favor, selecione uma opcao: ");
    scanf("%d", &opc);
    return opc;
}
int menuCadastro()
{
    int opc;
    system("cls");
      printf("\t\t\tCADASTRO DO BOLAO\n\n");
	  printf("\t1 - Cadastrar Jogo\n"
           "\t2 - Fazer bolao\n"
           "\t3 - Sair\n\n"
		   "\tPor favor, selecione uma opcao: ");
    scanf("%d", &opc);
    return opc;
}
struct JOGO cadastroJogo(int id){
	struct JOGO jogo;
	getchar();
	printf("\n\tInforme o nome das selecao 1: ");
	gets(jogo.selecao1);
	printf("\n\tInforme o nome das selecao 2: ");
	gets(jogo.selecao2);
	printf("\n\tInforme o placar do time 1: ");
	scanf("\n\t%d",&jogo.golTime1);
	printf("\n\tInforme o placar do time 2: ");
	scanf("\n\t%d",&jogo.golTime2);
	jogo.id = id+1;
	
	return jogo;
	
}
struct BOLAO cadastroBolao(int id_jogo){
	struct BOLAO bol;
	getchar();
	printf("\n\tinforme o nome do apostador: ");
	gets(bol.nomeApostador);
	printf("\n\tinforme  o seu palpite para o time 1: ");
	scanf("\n\t%d",&bol.golsTime1);
	printf("\n\tinforme  o seu palpite para o time 2: ");
	scanf("\n\t%d",&bol.golsTime2);
	bol.id_jogo = id_jogo;
	
	return bol;
	
}


 

a minha duvida é montar a estrutura para gravar os dados no arquivo, e também criar os arquivos

times.cpm (contém os times classificados para as oitavas de final);

. oitavas.cpm (armazenará os palpites das oitavas de final);
. quartas.cpm (armazenará os palpites das quartas de final);
. semis.cpm (armazenará os palpites das semifinais);
. final.cpm (armazenará os palpites para a final);
. resultados.cpm (armazenará os resultados oficiais de todas as etapas).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria a função para gravar os dados em arquivo?

Se for, o processo é bem parecido com o de mostrar os dados na tela.

 

A criação do arquivo pode ser feita dentro da própria função, usando a função "fopen()" para abrir o arquivo no modo de escrita e a função "fclose()" para o fechamento após ter salvo o conteúdo desejado.

Para salvar os dados, pode usar a função "fprintf()".

 

Nesse post, há um exemplo bem simples e prático de como trabalhar com arquivo: http://forum.imasters.com.br/topic/524169-exportar-pra-arquivo-txt/#entry2086403

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.