Tableaux - Fichiers - Fonctions - Procédures

Tableaux - Fichiers - Fonctions - Procédures - Algo - Programmation

Marsh Posté le 29-05-2009 à 12:56:55    

Bonjour,
 
Pourrait-on m'éclairer sur un exercices d'algo: Comment vérifier le mot de passe d'un utilisateur si celui-ci doit entrer son loggin et son mot de passe. L'utilisateur a droit à 3 essais et je dispose de 3 loggin différents ainsi que 3 mots de passe différents sachant qu'il peut y en avoir plus, les mdp et loggin se trouvent dans un fichier!!! Pouvez-vous m'éclairer un peu svp?  
Comment puis-je effectuer la vérification? Ensuite si c'est correct, l'utilisateur voit afficher un menu avec 11 sous menu lui permettant de se dirger vers l'un de ses menus, pouvez-vous m'indiquer comment faire.
Je n'utilise pas de langage de programmation particulier, juste besoin de connaitre le code algo...  
Merci d'avance....
 

Reply

Marsh Posté le 29-05-2009 à 12:56:55   

Reply

Marsh Posté le 29-05-2009 à 13:32:09    

C'est quoi ta difficulté avec la vérification ?
Tu prends le login tu parcours le fichier pour trouver le bon pass et tu le compares au pass donné, non ? Ou bien ton problème c'est de lire caractère par caractère ton fichier ?

Reply

Marsh Posté le 29-05-2009 à 14:32:00    

Non j'aimerais juste avoir une idée de code plus technique biensur. Je dois effectuer de mid ou trim pour la vérif? Sachant que le login et le mdp doicvent correspondre à une des trois logs du fichier...

Reply

Marsh Posté le 29-05-2009 à 14:47:59    

C'est comme ce que Deamon t'as dit, tu fais une requete sur ton fichier avec le login saisi, puis tu récupéres le mot de passe associé et tu le compares avec celui saisi.
Aprés si tu veux plus du technique, il faut nous décrire un peu plus ton environnement et ton langage ( et ton fichier ).

Reply

Marsh Posté le 29-05-2009 à 15:47:29    

Je n'utilise pas de langage particulier, il me faut juste le code algo.
Donc je crée une procédure et ensuite je fais un "appeler"???
Je suis néophyte en programmation donc svp faites preuve d'indulgence envers moi!!! :) Sinon j'peux toujours fournir plus d'explication....

Reply

Marsh Posté le 29-05-2009 à 22:03:30    

Hello, qqun est il capable de m'aider???

Reply

Marsh Posté le 31-05-2009 à 13:26:45    

Bonjour,
 
Voilà je repose encore une fois la question dans l'espoir que quelqu'un puisse me répondre... Dois je utiliser des fonctions trim ou/et mid , effectuer un 'appeler'? Pouvez-vous m'aider svp?
 
Merci

Reply

Marsh Posté le 31-05-2009 à 14:26:25    

Je sais pas trop à quel niveau doit etre ton algo (entre un général du style : récupérer le pass -> comparer bon/mauvais pass -> si égal alors ... sinon ... ; ou bien si c'est beaucoup plus technique du genre une boucle pour comparer caractère par caractère ton mot.
Donc on peut pas trop te répondre.
 
Tu en es où actuellement ? Tu as déjà fait quoi ?

Reply

Marsh Posté le 31-05-2009 à 16:06:48    

Variable ok en booléen
Variable nb_tent en num
Variable log, name
 
Debut
  Ecrire"Entrez nom et mdp"
  Lire name
  Lire log
  ok  <- Vrai
  nb_tent<- 1
  Tantque (ok) ET (nb_tent<=3) Faire
       Lire name
       Lire log
Fin tant que
        si nb_tent>3 et non ok alors
       "Ecrire veuillez contacter votreadmin."
        sinon Afficher Menu  
 
Voilà bon, j'ai plusieurs solution possible mais ma question est la suivante, comment vérifier précisément si les login entrés sont ceux correspondant au fichier? Tu serais aussi m'aider pour l'écriture de ce code stp?
Merci

Reply

Marsh Posté le 31-05-2009 à 17:00:07    

Je verrai plutot un truc du genre :

 
Code :
  1. Ouvrir(fichierNomMdp)
  2. mdpCorrect = Faux
  3. TantQue(Non(finDeFichier(fichierNomMdp))) Faire
  4.    ligne = lireLigne(fichierNomMdp)
  5.    Si name = recupererNom(ligne) Alors
  6.       Si pass = recuperMdP(ligne) Alors
  7.          mdpCorrect = Vrai
  8.       Fin Si
  9.       Sortir TantQue
  10.    Fin Si
  11. Fin TantQue
  12. Si mdpCorrect Alors
  13. ...
  14. Sinon
  15. ...
  16. Fin Si
 

En imaginant que par exemple chaque ligne est du style :
monPseudo:monMotDePasse
et les fonctions recupérerX s'occupent de découper la ligne pour obtenir soit le nom soit le pass.


Message édité par Deamon le 31-05-2009 à 17:01:35
Reply

Marsh Posté le 31-05-2009 à 17:00:07   

Reply

Marsh Posté le 31-05-2009 à 18:12:49    

Variable mdpcorrect <- booléen
Variable name, pws en alphanum
Variable i en num
Fonction recuperer nom()
 
 
 
Ouvrir (fichier secret.txt)
mdpcorrect <- Faux
Tant que (NON(findefichier(fichier secret.txt) ET mdpcorrect=Vrai))
        Pour i <- 1 à 3
       Faire  
         Ecrire "Entrez le nom"
      Lire name
      Ecrire "Entrez le mot de passe"
      Lire psw
      si name = recupererNom(ligne) alors
         si psw= recupererMdp(ligne) alors
         mdpcorrect <- Vrai
     finsi  
    finsi
  i suivant
Fin tant que  
       si mdpcorrect alors
      Afficher Menu
  sinon
         Ecrire "Veuillez contacter votre administrateur"
        finsi
......
 
Contenu du fichier secret.txt
loggin1 = Vanzwam
Password1=motdepasse
loggin2 = Tintin
Password2=Milou
loggin3 = Truckmuche
Password3=Bazard  
 
Tu peux me dire ce que représente exactement la ligne 5 et 6 de ton code... Mon code modifié ci-dessus est il correct?
Si on se réfère au loggin se trouvant dans le fichier texte est ce que ça marchera selon toi.... pour moi il doit manquer une vérification???
Merci

Reply

Marsh Posté le 31-05-2009 à 18:37:59    

(Utilise les balises [ code] [ /code] , sans les espaces, pour mettre ton code ça sera plus clair)
 
Non ça ne va pas.
 

Code :
  1. Tant que (NON(findefichier(fichier secret.txt) ET mdpcorrect=Vrai))


Ca veut dire que si le mdp n'est pas correct tu restes dans ta boucle et tu n'en sors jamais.
 
Tu ne dois pas mettre l'entrée du nom et du pass dans la boucle mais avant ! Tu ne vas pas redemander le nom/mdp à chaque fois que ton programme lit une ligne quand même.
 
Pourquoi tu fais une boucle For avec i alors que tu n'utilises pas i et que tu es déjà dans une boucle While qui test la fin du fichier ?
 
Tu utilises "ligne" sans avoir dit ce qu'il y avait dedans.

Reply

Marsh Posté le 31-05-2009 à 18:50:49    

OK merci Deamon pour ton aide déjà... En effet il s'agit d'un "OU" et pas d'un ET c'est évident.
Justement je n'ai pas bien saisi  la ligne 5 et 6 de ton code à savoir: 5.   Si name = recupererNom(ligne) Alors
6.      Si pass = recuperMdP(ligne) Alors
 
Peux-tu m'expliquer la fonction?
Pour la boucle "for" j'essayais juste de placer ma condition à savoir maximum trois essais!!!
Tu peux m'aider à corriger ça stp en entrant la condition...
Merci

Reply

Marsh Posté le 31-05-2009 à 19:01:58    

Ca peut pas marcher avec un For. Car une fois sorti du For il va recommencer le While et refaire un For.
Utilise un compteur qu tu incrémentes après :
     si name = recupererNom(ligne) alors
Et tu rajoutes dans les conditions du While : OU compteur>3
 
Pour recupererX j'ai déjà décrit ce qu'elles faisaient : "les fonctions recupérerX s'occupent de découper la ligne pour obtenir soit le nom soit le pass". S'il faut que détailles ces fonctions en gros c'est je lis la chaine de caractères qu'on me donne en cherchant caractère par caractère le séparateur (tu as choisi "=" ). On note sa position et de 1 à la position-1 c'est le nom et de position+1 à la taille de la chaine c'est le pass.

Reply

Marsh Posté le 04-06-2009 à 12:29:03    

Me revoilà, j'ai une question à propos des tableaux: Comment puis-je dans une fonction ou procédure insérez un tableau, enregistrer des informations dedans et le réutiliser par la suite pour faire la somme de ses informations.
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed