Jump to content
Sign in to follow this  
m90mine

Programa tipo pin telemoveis

Recommended Posts

m90mine

--------------------------------------------------------------------------------

Boas pessoal

sou novato por estas bandas e estou a percisar da voça ajuda sff

estou fazendo um programinha em C no dev c++ e perciso de uma ajuda pessoal estou fazendo um sistema de pins

o pin é 1234

mas queria fazer como nos telemoveis

ao fim de 3 tentativas erradas no pin o programa bloqueava como faço isso???

#include<stdio.h>

#include<stdlib.h>

main(){

int pin;

printf("introduza o pin\n");

scanf("%d",&pin);

if(pin==1234){printf("pin correcto\n");}

else{printf("pin incorrecto\n");}

system ("pause");

}

Share this post


Link to post
Share on other sites
Localhost

Tens uma variável que vai conter a quantidade de vezes que se tentou introduzir o PIN. Depois disso crias um ciclo que só vai terminar quando essa variável for igual a 3. Cada vez que a pessoa erra o PIN a variável incrementa uma unidade.


here since 2009

Share this post


Link to post
Share on other sites
thoga31

Um exemplo de algoritmo:

vezes = 1
Repetir
   Ler(pin)
   Se não (pin = 1234) então
      vezes += 1
   Se vezes = 4 então
      bloqueia
Até que (pin = 1234)


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Tens uma variável que vai conter a quantidade de vezes que se tentou introduzir o PIN. Depois disso crias um ciclo que só vai terminar quando essa variável for igual a 3. Cada vez que a pessoa erra o PIN a variável incrementa uma unidade.

Outro exemplo:

vezes = 1
pin = 0

Enquanto (vezes entre 1 e 3) ou Não (pin = 1234)
   Ler(pin)
   Se Não (pin = 1234) então
      vezes +=1
Fim Enquanto

Se (vezes = 4) então
    bloqueia


Knowledge is free!

Share this post


Link to post
Share on other sites
KiNgPiTo

Vais ter de entrar em ciclos, não sei se já aprendeste mas é algo do género (adaptado ao teu código):

#include<stdio.h>

int main(){
int pin, tentativas=0;

while(tentativas<4){
printf("introduza o pin\n");

scanf("%d",&pin);

if(pin==1234){
   printf("pin correcto\n"); 
   tentativas=4; // Isto para forçar a saida do ciclo, poderás criar uma flag para fazer o mesmo...
}

else{printf("pin incorrecto\n");}

tentativas++;
}

getchar();
return 1;
}

Corrigi também algumas coisas, que apesar de não serem erros/warnings são um bocado má pratica de programação entre os quais as chamadas ao sistema para o pause e não declarares um tipo para a main com um retorno...

Share this post


Link to post
Share on other sites
thoga31

getchar();

Não é antes

getch();

?? Ou não conheço a versão char? :)


Knowledge is free!

Share this post


Link to post
Share on other sites
KiNgPiTo

Eu também uso a getch pois no linux a getchar não me aparece na stdio mas em windows acho que é a getchar que aparece e não a getch...

Ou se calhar aparecem as duas... :)

Share this post


Link to post
Share on other sites
thoga31

Eu também uso a getch pois no linux a getchar não me aparece na stdio mas em windows acho que é a getchar que aparece e não a getch...

Ou se calhar aparecem as duas... :D

Em Windows aparece o getch, salvo erro, na conio. :)


Knowledge is free!

Share this post


Link to post
Share on other sites
Baderous

É getchar() que se usa, em qualquer SO. getch() nem sequer é standard.

Share this post


Link to post
Share on other sites
m90mine

Boas agora estou tentando fazer um printf a dizer o numero de tentativas que tem exemplo erra no pin tem 2 tentativas erra outra vez tem 1 tentativa e por ai fora mas o que eu fiz esta mal pois da erro e nao sei como fazer alguma dica?

Obrigado a todos pela ajuda no problema visto que sou novato na programação.

Share this post


Link to post
Share on other sites
thoga31

O que é que tu fizeste?

O pedido completo do que nada tem feito. :)

@Meron95,

És novato, ok. Mas daí até te fazerem as coisas para aprenderes vai uma pequena distância.

O que tu queres fazer é muito simples. Basta fazer um printf com a variável que define as vezes introduzidas.

Escrever vezes

Se a variável vezes é incrementada e não decrementada, então

Escrever 3-vezes

Pois assim aparece o número de vezes que falta para o programa bloquear.


Knowledge is free!

Share this post


Link to post
Share on other sites
m90mine

lol eu estava a fazer isso mas n pus 3- vezes tava a  fazer o contrario

mas obrigada a todos

Share this post


Link to post
Share on other sites
Localhost

lol eu estava a fazer isso mas n pus 3- vezes tava a  fazer o contrario

Isso já é mais um problema de matemática, bem básico...


here since 2009

Share this post


Link to post
Share on other sites
m90mine

Desculpem la pessoal mas isto nao esta a funcionar nao sei o que se passa

#include<stdio.h>

#include<stdlib.h>

int main()

{

int pin, tentativas=0, vezes;

while(tentativas<3)

{

printf("Introduza o pin\n");

scanf("%d",&pin);

if(pin==1234){

  printf("Pin correcto\n\n");

  tentativas=3;

if(pin><1234){

  printf("Pin incorrecto\n\n");

  tentativas=3;

   

   

    printf("3-vezes");

tentativas++;

}

system("pause");

return 1;

}

Share this post


Link to post
Share on other sites
Baderous

if(pin><1234){

Aquele sinal que usaste nem existe em C. O diferente escreve-se assim: !=

Para além disso, penso que tens problemas nas chavetas.

PS: Usa as tags do GeSHi para postar código.

Share this post


Link to post
Share on other sites
m90mine

#include<stdio.h>

#include<stdlib.h>

main()

{

int pin, tentativas=0;

while(tentativas<3){

printf("Introduza o pin\n");

scanf("%d",&pin);

if(pin==1234){

  printf("-|Pin correcto|-\n\n");

  tentativas=3;

}

else{printf("-|Pin incorrecto|-\n\n");}

tentativas++;

}

system("pause");

}

agora penso estar bem

Share this post


Link to post
Share on other sites
thoga31

@m90mine,

PS: Usa as tags do GeSHi para postar código.

É que desta maneira o código é muito menos legível, nem sequer é monospaced nem colorido. O GeSHi é monospaced e dá cor!


Knowledge is free!

Share this 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
Sign in to follow this  

×
×
  • 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.