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 :

programme en c++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2016
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 35
    Par d�faut programme en c++
    Bonjour,
    j'ai un fichier txt contenant deux colonnes avec des noms de m�dicament. Chaque ligne recense une interaction connue entre 2 m�dicaments en listant les 2 m�dicaments concern�s.
    Il faut que je cr�e un programme qui : lorsque je saisis le nom d�un m�dicament r�pertori� dans la premi�re colonne du premier fichier, vous renvoie le nom des m�dicaments avec lesquels il est connu pour interagir (contenus dans la deuxi�me colonne).

    Est ce que quelqu'un pourrais m'aidez s'il vous plait?

    Bonne journ�e

  2. #2
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    Hello,

    Une simple std::unordered_multimap devrait faire l'affaire.

  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2016
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 35
    Par d�faut
    D'accord, je vais essayer de comprendre cette fonction
    Merci

  4. #4
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par d�faut
    C'est un peu difficile de te donner des conseils sans faire l'exercice � ta place (ce n'est certainement pas ce que tu souhaites, hein?).

    Pour la lecture d'un fichier en c++, il faut regarder la classe fstream: http://www.cplusplus.com/reference/fstream/fstream/ qui marche un peu comme std::cin.

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    std::string a, b;
    std::fstream fs("monfichier.txt");
    fs >> a;
    fs >> b;

    Pour ton programme, ce que je sugg�rerais serait de de faire une map (std::map) entre un m�dicament et les m�dicaments avec lesquels il interagit.

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    std::map<std::string, std::vector<std::string>> interaction_map;
    using interaction = std::pair<std::string, std::string> // une ligne du fichier (médicament médicament)
    interaction i;
    while (fs >> i) // à toi de surcharger l'opérateur >>
    {
      interaction_map[i.first].push_back(i.second);
      interaction_map[i.second].push_back(i.first);
    }

    Ensuite pour chaque m�dicament, tu peux conna�tre la liste des m�dicaments avec lesquels il interagit en interrogeant la map:

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    auto doliprane_interactions = interaction_map["doliprane"];

  5. #5
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2016
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 35
    Par d�faut
    stendhal666 : j'essai de comprendre et de mettre en application ce que tu m'a montr�.

    Voici le code que je suis en train de taper
    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
     
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <map>
    #include <vector>
     
    using namespace std;
     
    int main()
    {	string a, b;
    	ifstream fichier("drugbank_22_02_2012.txt", ios::in); 
     
            if(fichier)
    {
            string ligne;
            while(getline(fichier, ligne))
            {
                    cout << ligne << endl;
            }
    }
     
            else
                    cerr << "Impossible d'ouvrir le fichier !" << endl;
            fichier >> a;
            fichier >> b;
     
            map<string, vector<string>> interaction_map;
            string i;
    	using interaction=pair<string,string>interaction i;
    	while (fichier>i){
    	    	interaction_map[i.first].push_back(i.second);
    	    	interaction_map[i.second].push_back(i.first);
    		}
            return 0;
        }
    la lecture du fichier marche sans probl�me mais la suite bloque et j'ai vraiment d mal � comprendre pourquoi. j'ai essayer d'identifier dans la map les string en string a et b ou de d�finir i comme une string ou un int...
    Je n'ai pas vu cette fonction en cours et j'avoue que je me m�lange un peu les pinceau avec les infos que tu m'a donn� et celles que je trouve sur le net en plus.

  6. #6
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    @stendhal666, une raison particuli�re d'utiliser une map<string, vector<string> au lieu d'une(unordered_)multimap<string, string> ?

    @Harmon, i est une pair<string, string>, c'est une interaction entre 2 m�dicaments (et une ligne de ton fichier).

  7. #7
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2016
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 35
    Par d�faut
    quelle est la diff�rence entre les deux foncions?

  8. #8
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    Une map autorise une seule valeur par clef, une multimap autorise plusieurs valeurs pour une seule clef.

    Une map<string, vector<string>> contourne ce probl�me pour autoriser plusieurs valeurs par clef.

Discussions similaires

  1. Programme de boot qui passe la main � Windows
    Par Bob dans le forum Assembleur
    R�ponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    R�ponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par j�r�me dans le forum C
    R�ponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment d�buter en programmation ?
    Par Marc Lussac dans le forum D�buter
    R�ponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associ�e � un programme
    Par Anonymous dans le forum EDI
    R�ponses: 1
    Dernier message: 22/03/2002, 09h43

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