Ir ao conteúdo

Thais Oliveira

Membro Júnior
  • Posts

    13
  • Cadastrado em

  • Última visita

  1. #include <stdio.h> #include <stdlib.h> #include <time.h> int validacao(int tentativaSenha[4]); void verificaSenha(int tentativaSenha[4], int mostra[5], int senha[4]); int main(){ //declaração de variáveis int senha[4], tentativaSenha[4], i, j, numero, mostra[4]; srand(time(NULL)); //gerando senha aleatoria sem repetição for (i=0;i<4;i++){ numero=rand()%10; if (senha[0]!=numero && senha[1]!=numero && senha[2]!=numero && senha[3]!=numero){ senha[i]=numero; printf("(%d)\t", senha[i]); }else{ i--; } } //iniciando as tentativas da senha for(i=1; i<=10; i++){ printf("\nEntre com sua %d chance: ", i); scanf("%d %d %d %d", &tentativaSenha[0], &tentativaSenha[1], &tentativaSenha[2], &tentativaSenha[3]); if(validacao(tentativaSenha)==0){ printf("Digite apenas numeros de 0 a 9, vamos tentar novamente: "); i--; }else{ numero=0; verificaSenha(tentativaSenha,mostra,senha); for(j=0;j<4;j++){ printf("[%d] ", mostra[j]); if(mostra[0]==1){ numero=numero+1; } }if(numero==4){ printf("\n Senha correta! "); i=101; } } }if(i==102){ printf("\n Não Foi desta vez :("); } return 0; } //função para validar os digitos da senha int validacao(int tentativaSenha[4]){ int i; for(i=0; i<4; i++){ if(tentativaSenha[i]>=0 && tentativaSenha[i]<=9){ return 1; }else{ i=5; return 0; } } } //função para verificar senha (-1,0,1) void verificaSenha(int tentativaSenha[4], int mostra[4], int senha[4]){ int i, j; for(i=0;i<4;i++){ mostra=-1; for(j=0;j<4;j++){ if(tentativaSenha[i]==senha[j] && i==j){ mostra[i]=1; }else{ if(tentativaSenha[i]==senha[j]){ mostra[i]=0; } } } } } Preciso fazer um programa que gere uma senha de 4 digitos aleatorios de 0 a 9 sem repetição, isto eu fiz no meu primeiro for na função main, no segundo for onde comentei(iniciando as tentativas da senha) é onde possivelmente está o erro, no if onde chamo a função validação, se eu digitar na execução do programa numero maiores que 9 ou menos que 0(negativos), recebo a mensagem para digitar apenas numeros de 0 a 9, então se eu digitar os numero de 0 a 9, o programa fecha. Não consigo entender o por que... Não sei se estou declarando ou chamando funções de forma errada.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!