Jump to content

Palavra passe


Alvess

Recommended Posts

Olá!

Tenho um problema num programa, é assim para entrar o utilizador deve introduzir a palavra passe.

Se o utilizador introduziu a palavra passe errada mais do que 3 vezes, então já não permite mais entrar.

Só que aqui não consegui fazer isto:

if (p_pass!= 1234)

{

do

{

printf("A palavra passe que foi introduzido esta errada. Tenta novamente :\n");

scanf("%d",&p_pass);

}

while(p_pass != 1234);

}

Ou temos de utlizar mais ciclo encadeado naquele ciclo?

se assim, como é que devemos fazedr isto?

:) :) :( :( :(

Link to post
Share on other sites

Podes apenas adicionar um contador, e adicionar à guarda do ciclo se esse contador ainda não excedeu 3 tentativas.

Ou seja, a condição do ciclo fica algo como

while (++contador < 3 && p_pass != 1234);

Com o ++ antes da variável, esse contador já está a ser incrementado

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to post
Share on other sites

Sim, tornava-se necessário colocar um if no final, para verificar as tentativas. Mas mesmo assim, no caso particular de acertar na última tentativa, ia dar barraca, porque não havia distinção se a última tentativa estava ou não certa.

Para corrigir isso, pode-se adicionar mais uma variável, por exemplo, acertou com o valor 0/1 e confirmar a partir daí. Neste caso, o contador apenas tem a função de limitar as tentativas. De notar que ambas as variáveis (contador e acertou devem ser inicializadas a 0).

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to post
Share on other sites

Porque não

int p_pass, n_tentativa = 0;

do {
  printf("Password: ");
  scanf("%d", &p_pass);
  if (p_pass == 1234)
    break;
  printf("Password inválida\n");
}
while (++n_tentativa < 3);

if (n_tentativa == 3)
  printf("Máximo de tentativas\n");

?

Link to post
Share on other sites
softklin

andre_mz, neste caso acho que isso não acontece, porque os tipos de dados são integer (a julgar pelo tipo de dados esperado pela expressão do scanf (%d)).

BTW, a solução do daj é interessante, e resolve o caso.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.