IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algorithme "adresse mail "


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Algorithme "adresse mail "
    Bonsoir à tous,

    Voilà pour lundi j'ai un exercice mais je bloque pas mal dessus, si vous pouvez m'aidez , ce serait très gentil de votre part

    Voici l'énoncé:

    On veut créer un algorithme qui permet de vérifier la validité d’une adresse mail saisie par l’utilisateur avant que celle si soit envoyée à la base de données du fichier des clients de l’entreprise.

    Les critères de validité de l’adresse retenus pour cet exercice sont les suivants :

    - L’adresse ne doit pas dépasser 25 caractères.
    - L’adresse doit contenir le signe « @ »
    - L’adresse doit contenir un seul point situé après le signe « @ »
    - L’adresse ne doit pas contenir de signes interdits « +/ ?% ……etc. »

    Pour cela, on vous demande :
    - De créer une fonction qui reçoit l’adresse saisie et qui renvoie vrai ou faux selon la validité de l’adresse.
    - D’écrire la partie du programme principal qui permet de saisir l’adresse, de la tester et d’afficher le message « adresse valide » ou « adresse erronée ».

    Vous disposez
    - D’une variable nommée Signes_Interdits contenant tous les signes interdits
    (Signes_Interdits = ”+/ ?%.......... ”
    - Des fonctions intégrées*
    LONGUEUR(mot : chaine ) : entier
    EXTRAIRE(mot : chaine, i : entier, j : entier) : chaine
    Reçoit en paramètre une chaine et permet d’extraire le nombre i de caractères de la chaine à partir de la position j.
    POSITION(mot : chaîne, lettre : chaine) entier
    Renvoie le rang du caractère contenu dans « lettre » si celui-ci est contenu dans la chaine « mot », -1 sinon. (Le premier rang étant 0)

    *Vous n’êtes pas obligés de les utiliser toutes.


    Voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Fonction mail1 ()
    Booleen : VRAI
     
    VAR
     
    	mail : caractère
     
     
    DEBUT
    	Afficher(« Entrez une adresse mail : »)
    	Saisir mail
    	Pour compteur de 1 à (LONGUEUR :mail)
    		Si (LONGUEUR :mail) >= 25 Alors
    			Afficher(« l’adresse mail n’est pas valide »)
    		Sinon 
    			Afficher(« l’adresse mail est valide »)
    		Fin si	
    		Si Signes_Interdits dans mail :
    			Afficher(« l’adresse mail n’est pas valide »)
    		Sinon 
    			Afficher(« l’adresse mail est valide »)
    		Fin si

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Quel est ton problème ?...

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    j'aimerais bien avoir quelques pistes car le je galère complètement ..

    MERCI

  4. #4
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Il faut que tu sois plus précis, demande une question précise sinon ça veut dire qu'on doit faire l'exo à ta place. Tu as déjà fait quelque chose donc c'est quoi la prochaine étape que tu n'arrives pas à comprendre/faire ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Ok merci

    J'aimerais savoir comment faire pour savoir si il y a un @ dans le mail ce qui va renvoyer a un booléen VRAI ou FAUX

    et comment faire pour savoir si après le @ il y a un point. Ex: lolo@gmail.com

    Merci d'avance

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Tu fais un tableau de char pour contenir ton adresse mail, pour le " @ " une condition qui test la présence dans ton adresse mail type :

    Boucle // Avec un indice pour tester chaque case de ton tableau
    {
    Condition ( caseTableau == "@") alors
    booléen ok
    }

    Et pour le point, il te suffit de stocker dans une variable tampon l'indice du @ & de reprendre la recherche à partir de cette indice, mais c'est le même principe.

  7. #7
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Déjà dans ta boucle de base tu incrémentes ton compteur de 1 à longueur de ta chaine, ça veut dire que tu vas passer N fois dans ta boucle, mais veux-tu vraiment afficher N fois "l’adresse mail n’est pas valide" et d'autres choses ?

    On va y aller progressivement, ton premier objectif c'est de faire un programme qui vérifie la longueur de la chaine. Fait déjà ça correctement.

    Ensuite tu vérifieras le '@' et pour ça il faut que tu utilises la fonction POSITION que tu as a ta disposition.

    On verra après pour la suite.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    adresse: chaîne de caractères, paramètre entrée
    etat: entier <- local_part;
    pos: entier
    lng: entier <- longueur(adresse), peut-être paramètre entrée
    c: caractère
     
    si (lng > 25) alors
        // Erreur: fin méthode
        retourner FAUX;
    finsi
     
    pour pos de 0 à (lng - 1) et (etat != erreur) faire
        c <- adresse[pos];
     
        switch etat
        cas local_part:
            si (c == '@') alors
                etat = host_name;
            sinon
                si ((c == '.') ou (caractère_interdit(c)) alors
                    etat = erreur;
                finsi
            finsi
        fincas
        cas host_name:
            si (c == '.') alors
                etat = top_level_domain_name;
            sinon
                si ((c == '@') ou (caractère_interdit(c)) alors
                    etat = erreur;
                finsi
            finsi
        fincas
        cas top_level_domain_name:
            si ((c == '.') ou (c == '@') ou (caractère_interdit(c)) alors
                etat = erreur;
            finsi
        fincas
        finswitch
     
    finpour
     
    retourner (etat == top_level_domain_name);

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    L'exercice est sûrement un exercice "Level 0" parce qu'une adresse "@." est valide

    Il faut faire un truc de ce style là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    adresse: chaîne de caractères, paramètre entrée
    etat: entier <- local_part;
    pos: entier <- 0
    lng: entier <- longueur(adresse), peut-être paramètre entrée
    part_lng: entier <- 0;
    c: caractère <- '\0'
     
    si (lng > 25) alors
        // Erreur: fin méthode
        retourner FAUX;
    finsi
     
    pour pos de 0 à (lng - 1) et (etat != erreur) faire
        c <- adresse[pos];
     
    // Attention quand se fait le +1: au début ou à la fin de la boucle pour
        part_lng <- (part_lng + 1);
     
        switch etat
        cas local_part:
            si (c == '@') alors
                si (part_lng > 1) alors
                    etat = host_name;
                    part_lng <- 0;
                sinon
                    etat = erreur;
                fsi
            sinon
                si ((c == '.') ou (caractère_interdit(c)) alors
                    etat = erreur;
                finsi
            finsi
        fincas
        cas host_name:
            si (c == '.') alors
                si (part_lng > 1) alors
                    etat = top_level_domain_name;
                    part_lng <- 0;
                sinon
                    etat = erreur;
                fsi
            sinon
                si ((c == '@') ou (caractère_interdit(c)) alors
                    etat = erreur;
                finsi
            finsi
        fincas
        cas top_level_domain_name:
            si ((c == '.') ou (c == '@') ou (caractère_interdit(c)) alors
                etat = erreur;
            finsi
        fincas
        finswitch
     
    finpour
     
    retourner ((etat == top_level_domain_name) et ((part_lng == 2) ou (part_lng == 3)));

  10. #10
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    désolé mais -1 et -1...

    Ça sert à quoi de lui donner le code à part à montrer que tu sais le faire aussi ? En plus il doit utiliser certaines fonctions données dans l'énoncé

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Trademark Voir le message
    désolé mais -1 et -1...

    Ça sert à quoi de lui donner le code à part à montrer que tu sais le faire aussi ? En plus il doit utiliser certaines fonctions données dans l'énoncé
    Merci pour les -1

    Le sujet est ouvert depuis 2 jours pour un exercice qui demande 30 minutes.

    De plus rootspronos n'a pas vu qu'il y a 3 parties (local_part, host_name, top_level_domain_name) dans une adresse email alors qu'une personne qui envoie des courriels s'en est aperçu

    Et pour le reste, "il doit utiliser certaines fonctions données dans l'énoncé", il se débrouille: il faut qu'il travaille un peu

Discussions similaires

  1. [VB6] procédure de vérification d'adresse mail ?
    Par ghohm dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2004, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo