Jump to content
Diogo Amante

Programa do euromilhões em C

Recommended Posts

Diogo Amante

Boa tarde

Eu necessito de ajuda para um código que estou a fazer sobre Sorteiro do Euromilhoes

O código é suposto ser composto por uma seleção de menus e é necessario utilizar pelos menos uma função

A parte do código em que estou a ter dificuldades é no preenchimento de um vetor com os numeros do euromilhoes.Pois é necessario que o código avise caso algum numero se repita.

Eu já efetuei a parte do código que preenche e diz se o numero é repetido o que não consigo fazer é a parte em que depois de dizer se é repetido efetua uma verificação para saber se o numero introduzido também é repetido.

O codigo é este:

#include <iostream>


int apostar(int numapostas);
main()
{
int menu,numapostas;

printf("############################################################################\n");
printf("                  Sorteio do Euromilhoes                                    \n");
printf("                  Selecione a Opção:                                        \n");
printf("                  1-Apostar                                                 \n");
printf("                  2-Ver Apostas                                             \n");
printf("                  3-Sortear                                                 \n");
printf("                  4-Verificar Apostas                                       \n");
printf("                  5-Sair                                                    \n");
scanf("%d",&menu);
switch(menu)
{
case 1:{
	
	printf("Digite o Quantidade de Apostas que pretende efetuar\n");
	scanf("%d",&numapostas);
	apostar(numapostas);
	break;
}
}
}
int apostar(int numapostas)
{
	int aposta1[7];
	int aposta2[7];
	int aposta3[7];
	int aposta4[7];
	int aposta5[7];
	int i=0,j,k=0,numeros=0;
	
	switch(numapostas)
	{
	default:{
		printf("Opção Inválida");
		break;
	}
	case 1:
	{
	do 
	{
		printf("Digite os numeros a apostar (Entre 0 e 50)\n");
		scanf("%d",&aposta1[i]);
		if(i>=1)
		{
			if (aposta1[i]<=0 || aposta1[i]>50)
				{
	     			printf("O numero que digitou é inválido\n");
	     			printf("Digite outro Numero\n");
	     			scanf("%d",&aposta1[i]);
				}
			
			a:j=0;
			for (j=0;j<i-1;j++)
				{	
					while (k==0){
					if (aposta1[i]==aposta1[j])
						{
							printf("Voce repetiu Um numero\n");
							printf("Digite outro Numero\n");
							scanf("%d",&aposta1[i]);
						}
					}
	
				}
		j=0;
	}
		i++;
	}while (i<=5);
	
	for(k=0;k<=5;k++)
	printf("%d-",aposta1[k]);
	
break;
}
}
}

 

Edited by Diogo Amante

Share this post


Link to post
Share on other sites
HappyHippyHippo

não li nenhuma linha de código, isto porque a pergunta original deu-me voltas à cabeça

dizes que já fizeste a parte de "inserção" do número e diz se é repetido ou não, mas na mesma linha dizes que o que não sabes é como é que se verifica se é repetido ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Diogo Amante

Se tu fizeres a inserção de numeros e repetires algum ele diz que aquele numero já foi repetido e executa o codigo para pedir outro numero e é quando pede esse outro numero que não faz a verificação

Share this post


Link to post
Share on other sites
HappyHippyHippo

todo o processo deverá ser um ciclo, é por isso que normalmente é chamado de ciclo de verificação


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Diogo Amante
18 minutos atrás, HappyHippyHippo disse:

todo o processo deverá ser um ciclo, é por isso que normalmente é chamado de ciclo de verificação

Certo só nao tenho nenhuma ideia de como fazer

Share this post


Link to post
Share on other sites
HappyHippyHippo
int tenho_o_valor_certo = 0;
while (!tenho_o_valor_certo)
{
  // obter o valor
}

 


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Diogo Amante
14 horas atrás, HappyHippyHippo disse:

int tenho_o_valor_certo = 0;
while (!tenho_o_valor_certo)
{
  // obter o valor
}

eu ja tentei realizar esse ciclo varias vezes mas o problema é que o programa bloqueia num determinado ponto nao consigo resolver 

O código é o seguinte


#include <iostream>


int apostar(int numapostas);
main()
{
int menu,numapostas;

printf("############################################################################\n");
printf("                  Sorteio do Euromilhoes                                    \n");
printf("                  Selecione a Opção:                                        \n");
printf("                  1-Apostar                                                 \n");
printf("                  2-Ver Apostas                                             \n");
printf("                  3-Sortear                                                 \n");
printf("                  4-Verificar Apostas                                       \n");
printf("                  5-Sair                                                    \n");
scanf("%d",&menu);
switch(menu)
{
case 1:{
	
	printf("Digite o Quantidade de Apostas que pretende efetuar\n");
	scanf("%d",&numapostas);
	apostar(numapostas);
	break;
}
}
}
int apostar(int numapostas)
{
	int aposta1[7];
	int aposta2[7];
	int aposta3[7];
	int aposta4[7];
	int aposta5[7];
	int i=0,j,k=0,numeros=0;
	
	switch(numapostas)
	{
	default:{
		printf("Opção Inválida");
		break;
	}
	case 1:
	{
	do 
	{
		printf("Digite os numeros a apostar (Entre 0 e 50)\n");
		scanf("%d",&aposta1[i]);
		if(i>=1)
		{
			if (aposta1[i]<=0 || aposta1[i]>50)
				{
	     			printf("O numero que digitou é inválido\n");
	     			printf("Digite outro Numero\n");
	     			scanf("%d",&aposta1[i]);
				}
			
			a:j=0;
		 for (j=0;j<i-1;j++)
				{	
					do{
					if (aposta1[i]==aposta1[j])                      /*E nesta parte do código que o programa bloqueia
						{
							printf("Voce repetiu Um numero\n");  
							printf("Digite outro Numero\n");
							scanf("%d",&aposta1[i]);
						}
					}while(k==0);	                                */
				}

		j=0;
	}
		i++;
	}while (i<=5);
	
	for(k=0;k<=5;k++)
	printf("%d-",aposta1[k]);
	
break;
}
}
}

 

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

pelo que parece, a tua implementação do ciclo que referi é o do {} while com o termo de validação k==0, certo ?

se sim, onde dentro do bloco de código é que existe a alteração do valor de k de forma a que o ciclo termine ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Diogo Amante
1 minuto atrás, HappyHippyHippo disse:

pelo que parece, a tua implementação do ciclo que referi é o do {} while com o termo de validação k==0, certo ?

se sim, onde dentro do bloco de código é que existe a alteração do valor de k de forma a que o ciclo termine ?

Peço desculpa faltou-me uma linha de código

#include <iostream>


int apostar(int numapostas);
main()
{
int menu,numapostas;

printf("############################################################################\n");
printf("                  Sorteio do Euromilhoes                                    \n");
printf("                  Selecione a Opção:                                        \n");
printf("                  1-Apostar                                                 \n");
printf("                  2-Ver Apostas                                             \n");
printf("                  3-Sortear                                                 \n");
printf("                  4-Verificar Apostas                                       \n");
printf("                  5-Sair                                                    \n");
scanf("%d",&menu);
switch(menu)
{
case 1:{
	
	printf("Digite o Quantidade de Apostas que pretende efetuar\n");
	scanf("%d",&numapostas);
	apostar(numapostas);
	break;
}
}
}
int apostar(int numapostas)
{
	int aposta1[7];
	int aposta2[7];
	int aposta3[7];
	int aposta4[7];
	int aposta5[7];
	int i=0,j,k=0,numeros=0;
	
	switch(numapostas)
	{
	default:{
		printf("Opção Inválida");
		break;
	}
	case 1:
	{
	do 
	{
		printf("Digite os numeros a apostar (Entre 0 e 50)\n");
		scanf("%d",&aposta1[i]);
		if(i>=1)
		{
			if (aposta1[i]<=0 || aposta1[i]>50)
				{
	     			printf("O numero que digitou é inválido\n");
	     			printf("Digite outro Numero\n");
	     			scanf("%d",&aposta1[i]);
				}
			
			a:j=0;
		 for (j=0;j<i-1;j++)
				{	
					do{                                           /*{
					if (aposta1[i]==aposta1[j])
						{
							printf("Voce repetiu Um numero\n");
							printf("Digite outro Numero\n");
							scanf("%d",&aposta1[i]);
						}
					else 
					k++;
					}while(k==0);                                    }*/
				}

		j=0;
	}
		i++;
	}while (i<=5);
	
	for(k=0;k<=5;k++)
	printf("%d-",aposta1[k]);
	
break;
}
}
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

antes de mais, seria de bom tom teres o código indentado correctamente, qualquer se seja o estilo, mas indentado ...

depois, seria bom também que apresentasses código que compile, porque desse modo já seria menos esse trabalho que uma pessoa teria que fazer ao ler o teu código, isto porque já é difícil o suficiente ler o código de terceiros, quanto mais quando ele está claramente errado.

agora, consegues explicar linha à linha o que o teu código faz ? fazendo referência exacta sobre o que a linha faz e não mais do que isso ?

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Diogo Amante
24 minutos atrás, HappyHippyHippo disse:

antes de mais, seria de bom tom teres o código indentado correctamente, qualquer se seja o estilo, mas indentado ...

depois, seria bom também que apresentasses código que compile, porque desse modo já seria menos esse trabalho que uma pessoa teria que fazer ao ler o teu código, isto porque já é difícil o suficiente ler o código de terceiros, quanto mais quando ele está claramente errado.

agora, consegues explicar linha à linha o que o teu código faz ? fazendo referência exacta sobre o que a linha faz e não mais do que isso ?

Aqui está explicado 

#include <iostream>


int apostar(int numapostas);
main()
{
int menu,numapostas;

printf("############################################################################\n");
printf("                  Sorteio do Euromilhoes                                    \n");
printf("                  Selecione a Opção:                                        \n");
printf("                  1-Apostar                                                 \n");
printf("                  2-Ver Apostas                                             \n");
printf("                  3-Sortear                                                 \n");
printf("                  4-Verificar Apostas                                       \n");
printf("                  5-Sair                                                    \n");
scanf("%d",&menu);
switch(menu)
{
case 1:{
	
	printf("Digite o Quantidade de Apostas que pretende efetuar\n");
	scanf("%d",&numapostas);
	apostar(numapostas);
	break;
}
}
}
int apostar(int numapostas)
{
	int aposta1[7];
	int i=0,j,k=0,numeros=0;
	
	switch(numapostas)
		{
			default:{
					printf("Opção Inválida");
					break;
					}
			case 1:
				{
				do 
				{
					printf("Digite os numeros a apostar (Entre 0 e 50)\n");    //algoritmo para pedir valores a preencher no vetor
					scanf("%d",&aposta1[i]);                                     
						if(i>=1)
							{
								if (aposta1[i]<=0 || aposta1[i]>50)   //verificar se o valor está entre 1 e 50
									{
	     								printf("O numero que digitou é inválido\n");
	    								printf("Digite outro Numero\n");
	     								scanf("%d",&aposta1[i]);
									}
			
				a:j=0;
		 		for (j=0;j<i-1;j++)                         //algoritmo que percorre o vetor e verifica se se existe algum valor repetido
					{	
						do{
							if (aposta1[i]==aposta1[j])
								{
									printf("Voce repetiu Um numero\n");
									printf("Digite outro Numero\n");
								scanf("%d",&aposta1[i]);
								}
							else 
							k++;
						}while(k==0);	
					}

								j=0;
							}
					i++;
			}while (i<=5);
	
	for(k=0;k<=5;k++)
	printf("%d-",aposta1[k]);
	
break;
}
}
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

eu pedi linha à linha, código não é mais do que uma série de instruções que seguem uma regra o mais simples e restrita regra para que o seu significado seja o menos dúbio possivel, pois caso contrário o computador não iia perceber o que estás a dizer (algo que acontece com a linguagem natural com os contextos e palavras com multiplos sentidos)

o exercício que quero que faças é olhar para o código e escrever em linguagem natural todo (mas mesmo tudo) o que está descrito, linha a linha.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.