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

 C++ Discussion :

Comparer 2 vecteurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut Comparer 2 vecteurs
    Bonjour,

    Si j'ai 2 vecteurs : vec1 : hdiidenoemieijdieno et vec2 : noemie
    Comment faire pour que le programme lise la totalité du vecteur 2 et dire qu'il est bien présent dans le vecteur 1
    J'ai fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for(int i=0;i<n;i++) {
          for(int j=0;j<i;j++){
            while  ( vec1 [i] == vec2 [j]){
            i++;
            j++;
            if (vec1 [i] == vec2 [j])
            cout<<"vec2 est dans vec1"<<endl;
            }
          }
        }
      return 0;
    }
    mais le message s'affiche pour chaque caractère présent. ma démarche est-elle bonne ?
    Quelqu'un pourrait me guider car je ne vois pas comment le faire

    Merci d'avance,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2011
    Messages : 71
    Par défaut
    Quand tu parle de vecteur tu parle de ou de ou encore de cela oriente pas mal la réponse.

    Pour std::string tu peux utiliser la methode std::string::find.
    Pour char vec[X] tu peux utiliser la fonction strstr.
    Pour deux std::vector il faut effectivement écrire une fonction capable de faire le travail.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut reponse
    Merci de votre réponse

    j'utilise char vec [x]
    par contre strstr je n'ai jamais vu cette fonction
    Je connais que for, while, et if avec les boucles imbriquées.
    Comment procéderiez vous?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    En réfléchissant, avec une feuille et un crayon.
    Tu veux vérifier qu'un vecteur contient toutes les entrées d'un autre ?
    Et bien tu parcours l'autre, et tu vérifies si chaque valeur se trouve dans le premier.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut reponse
    Merci pour cette réponse très réfléchie ...
    Ensuite c'est ce que mon programme fait justement et ce n'est pas ce que je recherche mais la présence ou non du vecteur en entier.
    J'ai trouvé ma solution devant ma feuille et mon crayon!

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par maj1907 Voir le message
    c'est ce que mon programme fait
    Donc tu as résolu ton roblème toute seule non ?
    Citation Envoyé par maj1907 Voir le message
    et ce n'est pas ce que je recherche
    Alors pourquoi l'avoir fait..?
    Faudrait savoir.
    Citation Envoyé par maj1907 Voir le message
    mais la présence ou non du vecteur en entier.
    Mais encore ?
    Citation Envoyé par maj1907 Voir le message
    J'ai trouvé ma solution devant ma feuille et mon crayon!
    Finalement tu as trouvé la solution ou pas ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maj1907 Voir le message
    Merci pour cette réponse très réfléchie ...
    [...]
    J'ai trouvé ma solution devant ma feuille et mon crayon!
    Et pourtant c'est très vrai ! Ecrire sur une feuille sur une "mot = hdiidenoemieijdieno" et "mot à chercher = noemie" puis souligner la partie "noemie", ce n'est pas une de ça dont il s'agit

    Le but est d'écrire sur papier, en français (ou pseudo-code), la méthode pour le faire : expliciter l'algorithme que ton cerveau utilise. Un truc dans le genre :
    "- je me place à la première lettre de 'mot',
    - soit un indice i égal à 0
    - je compare si les i-ieme lettres de chaque mot
    - sont-elles égale ?
    -- si oui, j'incrément i
    -- sinon je me place à la seconde de 'mot' et je recommence"

    Une fois que tu as ça, la traduction en langage C++ est presque immédiate

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2011
    Messages : 71
    Par défaut
    Effectivement dans ce cas c'est ce qu'il faut faire réfléchir sur papier.
    Ne pas oublier que l'indicateur de fin de chaine est le caractère '\0'.
    Donc lorsque tu arrives au '\0' de la plus petite chaine si tout les caractères précédents étaient égaux c'est OK.

    PS : N'hésites pas à utiliser un booleen (bool) quand tu arrives au caractére '\0' et que tout les caractéres précédents étaient égaux.
    Du coup tu pourras l'utiliser pour que ton programme dise si vec2 est une sous chaine de vec1.

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut
    Citation Envoyé par pjlan Voir le message
    Effectivement dans ce cas c'est ce qu'il faut faire réfléchir sur papier.
    Ne pas oublier que l'indicateur de fin de chaine est le caractère '\0'.
    Donc lorsque tu arrives au '\0' de la plus petite chaine si tout les caractères précédents étaient égaux c'est OK.

    PS : N'hésites pas à utiliser un booleen (bool) quand tu arrives au caractére '\0' et que tout les caractéres précédents étaient égaux.
    Du coup tu pourras l'utiliser pour que ton programme dise si vec2 est une sous chaine de vec1.
    Effectivement je n'ai pas pensé au booleen ! Je suis un peu plus éclairée, je vais modifier ça. Merci beaucoup de votre réponse .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Comparer deux vecteurs de tailles différentes
    Par arlyk dans le forum MATLAB
    Réponses: 12
    Dernier message: 29/01/2014, 16h16
  2. "Comparer" un vecteur à une matrice sans boucle for
    Par nawellee dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/04/2013, 20h55
  3. [XL-2003] Comparer des vecteurs dans plusieurs fichiers
    Par leo_nic dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2012, 17h07
  4. comparer deux vecteurs
    Par fraisa1985 dans le forum Mathématiques
    Réponses: 2
    Dernier message: 12/02/2010, 21h39
  5. Comparer le contenu de deux vecteurs
    Par misou83 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 20/07/2005, 17h17

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