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 :

Choix structure code


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    curieux
    Inscrit en
    Janvier 2012
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : curieux
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Par d�faut Choix structure code
    d�butant, codeblock, wingcc

    Bonjour,

    je dois cr�er une proc�dure pour charger un fichier texte (cette proc�dure sera appel�e plusieurs fois: cela chargera � chaque fois un nouveau fichier texte) dans un tableau cr�� dynamiquement, je pense qu'il faut utiliser une classe (fichiers .h, .cpp), mais je ne vois absolument pas comment l'�crire,
    j'ai d�j� �crit une proc�dure qui fonctionne dans un main, mais je souhaiterais avoir une proc�dure ext�rieure qui pourra etre appel�e plusieurs fois...

    le code du main :
    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
     
    #include <sstream>
    #include <string>
    #include <iostream>
    #include <fstream>
    #include <vector>
     
     
    int main()
     
    {
     
    std::vector<std::string>calendrier;
    std::string ligne;
    std::string enreg;
     
    std::ifstream fichier( "Fichiers/AL2.txt" );
     
    //découpage de chaque ligne du fichier en mot selon délimiteur ";"
    while ( std::getline( fichier, ligne ) )
    	{
            std::istringstream enreg( ligne );
            std::string mot;
     
            while ( std::getline( enreg, mot, ';' ) )
                {
    //copie dans un tableau
                    calendrier.push_back(mot);
                }
     
        }
        int nelem=calendrier.size()/6;
     
         // Affichage
      for (int i=0; i < nelem; i++)
        {
     
        for (int j=0; j < 6; j++)
          std::cout << calendrier[i * 6 + j] << " ";
        std::cout << std::endl;
      }
     
    std::cout << "CAPACITE"<< calendrier.capacity()<< "NOMBRE ELEMENTS"<< calendrier.size()<< '\n';
     
    return 0;
     
    }
    Pour r�sumer, j'aimerais la meme chose avec un .h et un .cpp...

    D�sol� pour la mise en page, c'est la premi�re fois que j'utilise le forum,
    Merci par avance, cordialement Secruos

  2. #2
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    bah, tu fais une fonction?

    Que doit-elle recevoir comme param�tres? Au moins le flux d'entr�e (comme ca, ca n'est pas forc�ment un fichier)
    Que doit-elle donner comme r�sultat?

    Tu as deux formes g�n�rales possibles:
    • Soit le tableau (un vector, comme tu l'a correctement choisi) est donn� en param�tre par r�f�rence (ce qui permet d'ajouter au bout)
    • Soit le vector est cr�� par la fonction.


    La premi�re forme donne quelque chose comme void lire_calendriers(std::istream& stream, std::vector<date_type> & calendrier), la secondestd::vector<date_type> lire_calendriers(std::istream& stream).
    Je t'invite tr�s fortement � d�finie date_type comme un alias de type sur string. ta fonction ne retourne pas des string (forme), mais des dates (fond).

  3. #3
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Quant � ton envie de classe.

    Si tu veux faire une classe, ce n'est pas le traitement qu'elle doit repr�senter.
    Une classe correspond � une chose, une information, une donn�e.
    Dans ton code, les candidats pour faire des classes sont "date" et "calendrier".

    D'une mani�re g�n�rale, un nom commun correspond un type, un nom propre � une variable, un verbe � une fonction, et une phrase � une instruction (id�alement, parfois quelques unes).
    Prenons la phrase "extraire du fichier "A.txt" des dates et les ranger sous le nom calendrier".

    On y voit des noms commun (fichier, date) deux verbes (extraire, ranger), un nom propre (calendrier). Ainsi que des pr�cisions et omission, comme "A.txt", et la nature de ce qu'est calendrier.
    Comment traduire cela? mot a mot:
    • fichier = fstream (et d�riv�s comme ifstream)
    • date = std::string (dans ton code)
    • extraire = une fonction extraire_dates
    • ranger = l'op�rateur d'affectation ou le constructeur

    En code, ca donne donc:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    std::ifstream fichier("A.txt");
    auto calendrier = extraire_dates(fichier);
    Note comme calendrier est de type auto car m�me en fran�ais, je ne l'avais pas pr�cis�. Le type est "celui que retourne la fonction".

  4. #4
    Membre du Club
    Homme Profil pro
    curieux
    Inscrit en
    Janvier 2012
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : curieux
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Par d�faut Re: choix structure code
    Merci pour votre aide , je vais donc revoir cela � l'aide de vos r�ponses, mais je pense vous solliciter � nouveau, ma maitrise des concepts de base du C++ n'est pas ce qu'elle devrait etre, et comme j'apprends mieux en tatonnant et en regardant j'avoue avoir un peu du mal avec la doc

  5. #5
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Tatonner n'est pas valable.
    Tu t'imagines traverser une grande ville en voiture sans avoir appris � conduire, sans le permis, juste en tatonnant?

    Cela dit, n'h�sites surtout pas � poser des questions
    La documentation n'est pas un livre de chevet, c'est quelque chose dont il faut apprendre la structure, pour savoir si une r�ponse y est (et o�), cela permet d'y revenir chaque fois qu'on en a besoin.
    Et ca permet aussi de savoir ce que le langage permet ou fournit

  6. #6
    Membre du Club
    Homme Profil pro
    curieux
    Inscrit en
    Janvier 2012
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : curieux
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Par d�faut Fonction externe � main
    Bonjour ternel,

    je me suis rendu compte de l'inutilit� de classe dans mon code, j'avais donc song� � une fonction (comme tu me l'as sugg�r�), par contre je souhaitais cr�er une fonction cr�ant le vector mais externe au fichier main.cpp (d'ou la classe) et je n'ai pas trouv� si cela �tait possible, ni comment faire : le .h ayant besoin du "classe.cpp" pour fonctionner?

    De plus, avec "auto" j'obtiens le message :
    G:\CB-LireLigne\Caractere\main.cpp|40|warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]|

    Merci de bien vouloir m'�clairer, nous d�butants n'avan�ons concretement grace � l'aide apport�e par des d�veloppeurs plus avertis, merci aussi pour tes r�ponses pr�c�dentes, concises et claires, elles m'ont permis de mieux appr�hender certains concepts

    Cordialement, secruos

  7. #7
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    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 153
    Billets dans le blog
    4
    Par d�faut
    Citation Envoy� par secruos Voir le message
    De plus, avec "auto" j'obtiens le message :
    G:\CB-LireLigne\Caractere\main.cpp|40|warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]|
    Tu compiles pas en C++11. Il serait temps de mettre � jour ton compilo.

    Citation Envoy� par secruos Voir le message
    je souhaitais cr�er une fonction cr�ant le vector mais externe au fichier main.cpp (d'ou la classe) et je n'ai pas trouv� si cela �tait possible, ni comment faire : le .h ayant besoin du "classe.cpp" pour fonctionner?
    Une classe ou une fonction c'est similaire. Tu mets les prototypes dans le header et l'impl�mentation dans n'importe quel fichier compil� (.cpp).
    https://cpp.developpez.com/faq/cpp/?...un-fichier-cpp
    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.

  8. #8
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Il n'y a pas grand chose � ajouter � ce que dit Bousk, � part un peu d'explications plus fondamentales.

    Le C++ (et le C) repose sur le concept de compilation s�par�e. Chaque fichier source est compil� s�par�ment, puis les morceaux sont r�unis.

    Dans ton projet, tu aurais trois fichiers: main.cpp, fonction.cpp, et un fonction.h.
    chacun des .cpp aurait la commande #include "fonction.h".

    Chaque #include est remplac� � la compilation par le contenu du fichier d�sign�.
    Les fichiers interm�diaires produits par la compilation sont main.o et fonction.o (avec gcc, pour les autres compilateurs, les noms peuvent varier un peu).
    main.o et fonction.o contiennent tous deux la d�claration de la fonction (en fait, ce qu'on appelle le symbole).
    Seul fonction.o contient la d�finition.

    C'est lors de la partie "r�union des morceaux", nomm�e "�dition des liens", que le compilateur rassemble kes deux fichiers .o en un unique ex�cutable, et dit "le symbole fonction de main.o est celui d�fini dans fonction.o".

    L'option -c de gcc permet d'arreter la compilation � la phase "compilation de chaque fichier", c'est � dire avant l'�dition des liens.
    par exemple, gcc -c -Wall *.cpp permet de compiler chaque .cpp ind�pendamment.
    L'�dition des liens se fait alors avec gcc *.o -o executable (-o permet de nommer le fichier produit)

Discussions similaires

  1. [CSS 3] Choix structure pour diaporama
    Par DJ Ca�sar 9114 dans le forum Mise en page CSS
    R�ponses: 2
    Dernier message: 03/06/2013, 16h54
  2. [Joomla!] Choix du code appropri�
    Par quomeiha dans le forum EDI, CMS, Outils, Scripts et API
    R�ponses: 0
    Dernier message: 15/02/2011, 17h48
  3. Choix structure tables
    Par G3off dans le forum Langage SQL
    R�ponses: 6
    Dernier message: 03/02/2010, 15h12
  4. Structure code source Netbeans
    Par Agrapheuse dans le forum NetBeans
    R�ponses: 4
    Dernier message: 21/10/2008, 15h54
  5. Conseil choix structure STL
    Par SteelBox dans le forum SL & STL
    R�ponses: 3
    Dernier message: 15/03/2005, 02h13

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