Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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]);
}
Talvez para facilitar, use vetores...