Ir para conteúdo

POWERED BY:

Arquivado

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

Kabs

Comparação de valores

Recommended Posts

Resumo do problema: É um prog de loteria que deve gerar 3 numero aleatorios entre 0 e 9 aonde o usuario pode digitar 3 numeros em seguida os 3 numeros escolhidos devem ser comparados aos sorteados aleatoriamente e incluir o valor do premio ganho

A tabela do premio é essa:

Qualquer um correto --- 10 reais

Dois corretos --- 100 reais

Três corretos, mas não em ordem---1000 reais

TrÊs corretos na ordem exata --- 1.000.000 reais

nenhum correto--- 0 reais

 

Meu cod ta assim:

 

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

int main(){
	srand(time(NULL));
	int i;
	int num1=rand()%10, num2=rand()%10, num3=rand()%10;
	int esc1,esc2,esc3;
	float premio=0;
	
      
	printf("<><><> Escolha 3 Numeros entre 0 e 9 <><><>\n\n");
	printf("Digite o Primeiro Numero:\n");
	scanf("%d", &esc1);
	
	printf("Digite o Segundo Numero:\n");
	scanf("%d", &esc2);
	
	printf("Digite o Terceiro Numero: \n");
	scanf("%d", &esc3);
	
	for (i=0; i<3; i++)
     {
           /* para gerar números aleatórios de 0 a 9 */
           printf("\nOs Numero sorteados foram:\n%d, %d, %d", num1, num2, num3);
      }
        
     
      
      if (esc1==num1 && esc2==num2 && esc3==num3)
      {
      	printf("\n\n 3 Numeros Corretos");
      	premio=1000000;
      }
       else{
	  	printf("\n\nNenhum Numero Correto\n");
	  }
		 
		 printf("\nValor Ganho do Premio R$: %.2f", premio);      
	
	return 0;

 

Minha dificulde como farei para comparar quando for um numero correto, dois numero corretos e tres corretos mas não em ordem?

Outra coisa por quando compilo os numeros sorteados estão saindo 3 vezes seguidas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Marcelo disse, use arrays.

Para diferenciar entre o prêmio se os números forem acertados na ordem ou não, utilize uma variável. Como implementei abaixo, "isolei" o comportamento p/ criar uma função que lida somente com a quantidade de acertos em qualquer ordem.

(Não copie e cole. Reescreva e pergunte se tiver dúvidas.)

 

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
int acerto_em_ordem(int numeros_sorteados[], int numeros_informados[]) {
   int i = 0;
   while (i < 3 && numeros_sorteados[i] == numeros_informados[i]) i++;
   return (i > 3);
}
 
int contar_acertos(int numeros_sorteados[], int numeros_informados[]) {
   int i, j, acertos = 0;
   for( i = 0; i < 3; i++) {
      for( j = 0; j < 3; j++) {
         if (numeros_sorteados[j] == numeros_informados[i])
            acertos++;
      }
   }
   return acertos;
}
 
int main() {
   srand(time(NULL));
   int numeros_sorteados[3] = {rand() % 10, rand() % 10, rand() % 10};
   int numeros_informados[3] = {0,0,0};
   const float premios[] = {0.0F, 10.0F, 10.0e2F, 10.0e3F, 10.0e6F};
 
   int i;
 
   for(i = 0; i < 3; i++) {
      printf("Digite o número %d: ", i+1);
      scanf("%d", &numeros_informados[i]);
   }
 
   int indice_premio = 0;
 
   if (acerto_em_ordem(numeros_sorteados, numeros_informados)) {
      indice_premio = 4;
   } else {
      indice_premio = contar_acertos(numeros_sorteados, numeros_informados);
   }
 
  if (!indice_premio)
     puts("Você não ganhou nada.");
  else
     printf("Você ganhou R$ %.2f\n", premios[indice_premio]);
}

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.