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 :

déclaration d'une fonction


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut déclaration d'une fonction
    Bonjour.

    J'ai un petit souci, j'ai fais un petit programme appelé article, donc il faut entrer le nom et le code de l'article.

    Je voudrais alors créer une fonction qui va me permettre de comparer deux articles : si ils ont le même nom et le même code il retourne 1 sinon il retourne 0.

    Merci.

  2. #2
    Membre actif
    Avatar de EtherOS
    Homme Profil pro
    Etudiant Polytechnicien
    Inscrit en
    Juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant Polytechnicien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 58
    Points : 233
    Points
    233
    Par défaut
    => Entrer le code source et les erreurs que votre compilateur affiche

    => Le But de ce forum n'est pas de donner des solutions toutes faites mais vous aider via ce que vous avez fait à parvenir à la solution.

  3. #3
    Membre actif
    Avatar de EtherOS
    Homme Profil pro
    Etudiant Polytechnicien
    Inscrit en
    Juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant Polytechnicien
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 58
    Points : 233
    Points
    233
    Par défaut
    Pour vous donner des idées :

    vous pouvez créer une structure Article ou une classe (selon votre choix- je choisis une structure par défaut ) . vous pouvez créer un header article.h et un fichier *.cpp peut être myarticle.cpp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // contient la fonction compare
     
    #include <string>
     
    // contient les fonctions d'affichage cout, cin ,etc...
     
    #include <iostream>
     
    typedef  struct  Article
    {
       string  name;
     
       string  Code;
    };

    => créer par exemple des fonctions comme suit :


    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
    /**
     * @fn int  isEqualName (Article , Article)
     * @param  article1 
     * @param  article2
     * @brief compare les noms des deux articles
     * @return  1 si les noms sont égaux et 0 sinon
     */
     
    int  isEqualName (Article article1, Article article2)
    {
     
    // on copie les noms dans name1 et name2 resp.  
     
    string name1 (article1.name), name2 (article2.name);
     
    // la fonction retourne resultat qui est 0 ou 1
     return(name1.compare(name2));
    }
     
    /*pour comparer deux codes faire de mêm :*/
     
     
    /**
     * @fn int  isEqualCode (Article , Article)
     * @param  article1 
     * @param  article2
     * @brief compare les codes des deux articles
     * @return  1 si les codes sont égaux et 0 sinon
     */
     
    int isEqualCode (Article article1, Article article2)
    { 
      // on copie les codes dans code1 et code2 resp.   
      string code1 (article1.code), code2(article2.code);
     
      //la fonction retourne resultat qui est 0 ou 1
       return(code1.compare(code2));
    }
    => pour plusieurs articles au nombre de NBR_ARTICLES par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define NBR_ARTICLES  1000
    Vous pouvez initialiser l'article avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Article NewArticle[] = new Article[NBR_ARTICLES]
    puis généraliser les fonctions isEqualName et isEqualCode

    Ensuite ne pas oublier de libérer l'espace :

    Je crois que c'est suffisant pour vous permettre de bien réaliser votre code.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut voici mon code
    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
    #include <iostream>
    #include <string>
     
    using namespace std;
    class Article
    {
    public:
        string nom;
        int code;
        int quantite;
        int prix;
        Article(string a, int b, int c, int d)
        {
            nom=a;
            code=b;
            quantite=c;
            prix=d;
     
     
        }
        Article()
        {
           nom = "sucre";code = 14;quantite = 13;prix= 45;
        }
        int cmpArticle(Article a1, Article a2);
        if a1.nom==a2.nom
        return 1;
     
        else
            {
           return 0;
       }
    };
    int main()
    {
     Article a1;
     cout << "constructeur par defaut" << endl;
     cout << "nom=" << a1.nom << endl;
     cout << "code=" << a1.code << endl;
     cout << "quantite=" << a1.quantite << endl;
     cout << "prix=" << a1.prix << endl;
     cout <<  " " << endl;
    Article a2("lait", 15, 14, 50) ;
     cout << " constructeur initialisant" << endl;
     cout << "nom=" << a2.nom << endl ;
     cout << "code=" << a2.code << endl;
     cout << "quantite=" << a2.quantite << endl;
     cout << "prix=" << a2.prix << endl;
     Article.cmpArticle
     
     
    return 0;
    }

  5. #5
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    ce code ne compile même pas, un minimum d'effort serait le bienvenu...

    btw, surcharger l'opérateur == serait peut-être plus judicieux et simple/naturel à l'utilisation.
    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.

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par EtherOS Voir le message
    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
    /**
     * @fn int  isEqualName (Article , Article)
     * @param  article1 
     * @param  article2
     * @brief compare les noms des deux articles
     * @return  1 si les noms sont égaux et 0 sinon
     */
     
    int  isEqualName (Article article1, Article article2)
    {
     
    // on copie les noms dans name1 et name2 resp.  
     
    string name1 (article1.name), name2 (article2.name);
     
    // la fonction retourne resultat qui est 0 ou 1
     return(name1.compare(name2));
    }
     
    /*pour comparer deux codes faire de mêm :*/
    Pourquoi faire une copie avant de comparer ? Comparer directement me semble plus simple : return article1.name.compare(article2.name);. De même, éviter de copier les structures dans l'appel de fonction, les passer par référence constante : int isEqualName (Article const &article1, Article const &article2)
    Citation Envoyé par EtherOS Voir le message
    => pour plusieurs articles au nombre de NBR_ARTICLES par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define NBR_ARTICLES  1000
    Vous pouvez initialiser l'article avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Article NewArticle[] = new Article[NBR_ARTICLES]
    Il est souvent préférable d'utiliser un vector<Article> : plus robuste, plus simple, de taille variable.
    Citation Envoyé par EtherOS Voir le message
    puis généraliser les fonctions isEqualName et isEqualCode

    Ensuite ne pas oublier de libérer l'espace :

    Attention, si on a fait un Article * articles = new Article[xxx], il faut absolument faire un delete[] articles. Quand je disais que c'était plus risqué à utiliser que vector (qui lui se chargera lui même de libérer la mémoire) .

    De nos jours, du code C++ devrait comporter très peu de new, et encore moins de new[].
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut modification du code
    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
    #include <iostream>
    #include <string>
     
    using namespace std;
    class Article
    {
    public:
        string nom;
        int code;
        int quantite;
        int prix;
    int cmpArticle (Article a1, Article a2);
     
        Article(string a, int b, int c, int d)
        {
            nom=a;
            code=b;
            quantite=c;
            prix=d;
       }
     
    int isEqualcode(Article a1, Article a2);
    {
    int code1;
    int code2;
    int code1(Article a1.code);
    int code2(Article a2.code);
    return a1.code.cmpArticle(a2.name);
    }
     
    };
     
    int main()
    {
     Article a1("lait", 15, 14, 50) ;
     cout << "constructeur par defaut" << endl;
     cout << "nom=" << a1.nom << endl;
     cout << "code=" << a1.code << endl;
     cout << "quantite=" << a1.quantite << endl;
     cout << "prix=" << a1.prix << endl;
     cout <<  " " << endl;
    Article a2("lait", 15, 14, 50) ;
     cout << " constructeur initialisant" << endl;
    cout << "nom=" << a2.nom << endl ;
     cout << "code=" << a2.code << endl;
     cout << "quantite=" << a2.quantite << endl;
     cout << "prix=" << a2.prix << endl;
     
    return 0;
    }

Discussions similaires

  1. [C#]Déclaration d'une fonction globale
    Par Raton dans le forum C#
    Réponses: 7
    Dernier message: 21/09/2013, 12h27
  2. Réponses: 4
    Dernier message: 24/04/2007, 16h07
  3. déclaration d'une fonction static
    Par salseropom dans le forum C
    Réponses: 4
    Dernier message: 09/03/2007, 16h59
  4. Réponses: 2
    Dernier message: 10/01/2007, 23h28
  5. Réponses: 4
    Dernier message: 26/07/2005, 13h38

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