#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.