Kabs 0 Denunciar post Postado Janeiro 15, 2013 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
Marcelo Garbin 30 Denunciar post Postado Janeiro 15, 2013 Talvez para facilitar, use vetores... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Janeiro 15, 2013 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