#include #include /* * Ep1: Simulacao do jogo "Senha" * MAC 110 * Professor Joao Eduardo Ferreira * Feito por: Diogo Gomes e Rodrigo Sampaio Primo */ int main() { int n, /* comprimento da senha */ k, /* numero maximo para compor a senha */ senha, tentativa, /* armazenam a senha e as tentativas respectivamente */ senhaUn, tentativaUn, /* armazenam temporariamente cada um dos elementos (unidades) da seha e da tentativa */ tentativaTmp, senhaTmp, /* copia do valor da senha e da tentativa */ cont, /* armazena o numero de tentativas ate descobrir a senha */ i, e, /* contadores de controle dos for */ acertoPos, acertoNum; /* conta quantos acertos de posicao e numero (acertoPos) ou somente numero (acertoNum)*/ /* Esta parte recebe o comprimento da senha, o numero maximo para compo-la e a senha */ printf("Defina o comprimento da senha para o jogo (o valor máximo é 9):\n"); scanf("%d", &n); printf("Defina o número maximo para compor a senha (o valor máximo é 9):\n"); scanf("%d", &k); printf("Cada senha ou tentativa eh uma sequencia de %d numeros de 1 a %d\n", n, k); printf("Insira uma senha de %d numeros:\n", n); scanf("%d", &senha); /* Inicializa algumas variaveis */ cont = 1; i = 1; tentativaTmp = tentativa; /* Checar se o tamanha de "senha" eh menor ou igual a "n" e se respeita os valores possiveis definidos por "k" */ /* NAO FUNCIONA AINDA */ /* while (tentativaTmp % 10) { if (tentativaTmp % 10 > k) { printf("O programa falhou! A senha possui algum elemento de valor maior que o definido como valor maximo."); exit; } tentativaTmp = tentativaTmp / 10; cont ++; } if (cont != n) { printf("Tamanho invalido para senha. Voce inseriu uma senha com %d digitos, mas ela deve ter %d", cont, n); exit; } */ /* Recebe a primeira tentativa */ printf("Entre com a primeira tentativa para acertar a senha:\n"); scanf("%d", &tentativa); /* Enquanto a tentativa nao for igual a senha executa os testes abaixo */ while (tentativa != senha) { senhaTmp = senha; acertoPos = 0; acertoNum = 0; /* Verifica quantos numeros a pessoa acertou no lugar errado */ for (i = 1; i <= n; i++) { tentativaTmp = tentativa; senhaUn = senhaTmp % 10; senhaTmp = senhaTmp / 10; for (e = 1; e <= n; e++) { tentativaUn = tentativaTmp % 10; tentativaTmp = tentativaTmp / 10; if (tentativaUn == senhaUn) { acertoNum++; break; } } } tentativaTmp = tentativa; senhaTmp = senha; /* Verifica quantos numeros a pessoa acertou no lugar e posicao corretos */ for (i = 1; i <= n; i++) { tentativaUn = tentativaTmp % 10; senhaUn = senhaTmp % 10; tentativaTmp = tentativaTmp / 10; senhaTmp = senhaTmp / 10; if (tentativaUn == senhaUn) { acertoPos++; acertoNum--; } } printf("Esta tentativa obteve %d pino(s) pretos e %d pino(s) brancos\n\n", acertoPos, acertoNum); printf("Entre com uma nova tentativa para acertar a senha:\n"); scanf("%d", &tentativa); cont++; } printf("Parabens voce acertou a senha %d em %d tentativa(s)\n", senha, cont); return 0; }