Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/01/2013, 19h34   #1
KEMAL2106
 
Homme erard koumba kemal
Développeur informatique
Inscription : juin 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme erard koumba kemal
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juin 2012
Messages : 3
Points : -1
Points : -1
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.
KEMAL2106 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 20h04   #2
EtherOS
Membre habitué
 
Avatar de EtherOS
 
Homme Lionel Tidjon
Etudiant Polytechnicien
Inscription : juillet 2012
Messages : 51
Détails du profil
Informations personnelles :
Nom : Homme Lionel Tidjon
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2012
Messages : 51
Points : 110
Points : 110
=> 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.
EtherOS est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 04/01/2013, 21h06   #3
EtherOS
Membre habitué
 
Avatar de EtherOS
 
Homme Lionel Tidjon
Etudiant Polytechnicien
Inscription : juillet 2012
Messages : 51
Détails du profil
Informations personnelles :
Nom : Homme Lionel Tidjon
Localisation : Cameroun

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

Informations forums :
Inscription : juillet 2012
Messages : 51
Points : 110
Points : 110
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 :
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 :
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 :
#define NBR_ARTICLES  1000
Vous pouvez initialiser l'article avec :

Code :
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.
EtherOS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/01/2013, 22h57   #4
KEMAL2106
 
Homme erard koumba kemal
Développeur informatique
Inscription : juin 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme erard koumba kemal
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juin 2012
Messages : 3
Points : -1
Points : -1
Par défaut voici mon code

Code :
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;
}
KEMAL2106 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/01/2013, 00h24   #5
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 553
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 553
Points : 4 106
Points : 4 106
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.
Bousk est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 12h19   #6
JolyLoic
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 677
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 38
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 4 677
Points : 9 903
Points : 9 903
Citation:
Envoyé par EtherOS Voir le message
Code :
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 :
#define NBR_ARTICLES  1000
Vous pouvez initialiser l'article avec :

Code :
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.
JolyLoic est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/01/2013, 12h36   #7
KEMAL2106
 
Homme erard koumba kemal
Développeur informatique
Inscription : juin 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme erard koumba kemal
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juin 2012
Messages : 3
Points : -1
Points : -1
Par défaut modification du code

Code :
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;
}
KEMAL2106 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h18.


 
 
 
 
Partenaires

Hébergement Web