Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > Devoir de C++ > Lecture du sujet

Devoir de C++

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Ptt-homme # Posté le 22/05/2008 à 10:33:54
Groupe : Membres
Bonjour à tous,

je suis désolé de venir vous voir, mais je dois rendre un devoir et je comprends pas pourquoi, ce que j'ai fait ne marche pas!
Je dois réaliser un fichier avec des pointeurs et surcharge des opérateurs, mais le résultat obtenu ne donne pas ce que je souhaite! Je n'arrive pas à faire la concat + de deux chaines et aussi la comparaison ==

Voilà le programme:

Code : C++
 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <cstdlib>
#include <iostream>
#include <string.h>
//#include <conio.h>
using namespace std;

class chaine
{
     private : 
     
     char text[100];

     public:

     chaine();
     chaine(char *);
     chaine operator = (chaine*); 
     int operator == (chaine &);
     chaine* operator + (chaine &);
     char operator [] (int);
     void affiche();
     ~chaine();
};

chaine::chaine() // constructeur 1
{ 
    text[0];
}
chaine::chaine(char *m) // constructeur 2
{
    strcpy(text,m);
}
void chaine::affiche()
{
    cout<<text<<endl;
}

int chaine :: operator == (chaine &ch)// operator == problème avec cette surcharge
{
    int i=0;
    int flags;
    while((this->text[i])==(ch.text[i]))//compare caractere par caractere si c'est les memes mots
    i++;
    i--;
    if ((i==strlen(ch.text))&&(i==strlen(this->text))) flags=1;
    else flags=-1;
    return flags;
}

char chaine:: operator [] (int i)// oprerator []
{
    return this->text[i];
}

chaine chaine:: operator = (chaine *ch) // operator =
{
    strcpy(this->text,ch->text);
}

chaine* chaine:: operator + (chaine &ch) // operator +
{
    chaine*resultat=new chaine();
    strcat(resultat->text,this->text);
    strcat(resultat->text,ch.text);
    return resultat;
}

chaine::~chaine() // destructeur
{
    delete [] text;
}

int main()
{
chaine a ("bonjour"),b("maria"),c,d("bonjour"),e;
     if ((a==b)!=1) cout <<"perdu";
     else cout << "gagne !\n";
     if ((a==d)!=1) cout <<"perdu"; 
     else cout << "gagne !\n";
     cout <<"a:";
     a.affiche();
     cout<<"b: " ;
     b.affiche();
     cout<< "d:" ;
     d.affiche();
     c=a+b;
     cout<<"c:" ;
     c.affiche();
     int i=0;
     while (c[i]!='\0')
     {
     cout << c[i];
     i++;
     }
system("pause");
return 0;
}


Merci de votre aide.

Thomas
Édité le 22/05/2008 à 11:33:18 par Ptt-homme
Hors ligne MicBeastKiller # Posté le 22/05/2008 à 10:43:29
Groupe : Membres
Salut,
utilise les balises code C++.
mon compilo (je suis sous Code-Block) me signale deux oublis de ";" dans le code
Code : C++
1
2
if ((a==b)!=1) cout <<"perdu" else cout << "gagne !\n" ;
if ((a==d)!=1) cout <<"perdu" else cout << "gagne !\n" ;


il faut écrire

Code : C++
1
2
3
4
5
6
7
8
9
if ((a==b)!=1)
cout << "perdu";
else
cout << "gagne !\n" ;

if ((a==d)!=1)
cout <<"perdu";
else
cout << "gagne !\n" ;



pour le reste, j'ai pas encore regardé.



Édité le 22/05/2008 à 10:44:48 par MicBeastKiller
Hors ligne Ptt-homme # Posté le 22/05/2008 à 11:31:22
Groupe : Membres
Merci tout d'abord à toi pour ton aide, je ne connaissais pas les balises je vais faire de mon mieu à l'avenir.
Édité le 22/05/2008 à 11:32:44 par Ptt-homme
Hors ligne MicBeastKiller # Posté le 22/05/2008 à 13:19:05
Groupe : Membres
Salut,
Pourquoi ne pas utiliser un booléen en type retour de ta méthode "==" ; par ailleurs, pourrais-tu expliquer ce que tu souhaites avec cette méthode.
je pense que l'algo naïf serait :
- comparer la longueur des deux mots
- s'ils n'ont pas la même longueur, renvoyer false
- sinon comparer lettre à lettre les deux mots
- renvoyer false dès qu'une lettre est distincte
- sinon renvoyer true
Je crois que tu fais l'inverse (d'abord comparer lettre à lettre puis les longueurs) sauf erreur de ma part

voici un code, certe pas très beau avec des return dans des boucles ou des if !!!
Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
bool chaine::operator==(chaine &ch)
{
    if ( strlen(ch.text) != strlen(this->text) )
    {//si les deux mots n'ont pas la même taille
        return false;
    }
    else
    {//les deux mots ont la même taille
        for (int i = 0 ; i < strlen(this->text) ; ++i)
        {
            if (this->text[i] != ch.text[i])
            {//une des lettres est distincte
                return false;
            }
        }
//toutes les lettres sont identiques
        return true;
    }
}


pense à changer le type retour de cette méthode dans ta classe chaine.

Pour la concaténation, je n'ai pas regardé.
Hors ligne lmghs # Posté le 22/05/2008 à 14:02:19
Groupe : Membres
a- Il manque plein de const. Mais alors plein!
b- Tu va avoir des problèmes de symétrie sur tous tes opérateurs binaires.
c- "text[0]" ne fait rien -- ne manquerait-il pas un " = 0;" ?
d- L'opérateur [] doit renvoyer une référence, et il manque la surcharge qui renvoie une référence constante
e- L'opérateur d'affectation doit renvoyer une référence (mais vu tes attributs membre (i.e. pas de pointeur), celui fourni par défaut suffit amplement, de même que pour le destructeur ; le jour où tu passes vers un pointeur, n'oublie pas le constructeur de copie)
f- L'opérateur de concaténation ne doit pas renvoyer un pointeur mais une valeur
 
Hors ligne Ptt-homme # Posté le 22/05/2008 à 15:11:12
Groupe : Membres
Arf, je ne comprends pas tout ce que tu viens de dire, je dois vraiment travailler dans cette matière pour moi c'est encore du charabia. En parcourant le net je viens de trouver la solution, mais quand je l'a compile chez moi elle plante et je crois qu'il y a un problème de pointeur mais je ne le trouve pas. De plus c'est vraiment loin de ce que j'avais pondu.

La voici :
Code : C++
  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
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <conio.h> 

using namespace std;

class chaine 

{
      private :
      
              int longueur; 
              char *adresse_dyn; 

      public: 

              chaine(); //constructeur1 
              chaine(char *); //constructeur2  
              ~chaine(); //destructeur
              void operator =(chaine &); 
              int operator ==(chaine); 
              chaine &operator +(chaine); 
              char &operator [](int); 
              void affiche();
}; 

  

chaine :: chaine()  //constructeur1 
{
       longueur = 0;
       adresse_dyn = new char[1];
}

  

chaine :: chaine(char *texte)   // constructeur2 
{
       int i; 
       for(i=0;texte[i]!='\0';i++); 
       longueur = i; 
       adresse_dyn = new char[longueur+1]; 
       for(i=0;i!=(longueur+1);i++) adresse_dyn[i] = texte[i];
} 

void chaine :: operator =(chaine &ch) 
{  
            longueur = ch.longueur; 
            adresse_dyn = new char[ch.longueur+1]; 
            for(int i=0;i!=(longueur+1);i++)
            {
                    adresse_dyn[i] = ch.adresse_dyn[i];
            }
} 

int chaine :: operator ==(chaine ch) 
{
           int i, res=1; 
           for(i=0;(i!=(longueur+1))&&(res!=0);i++)
           {
                     if(adresse_dyn[i]!=ch.adresse_dyn[i])res=0; 
                     return res;
           }
} 

chaine &chaine :: operator +(chaine ch) 
{
           int i; 
           static chaine res; 
           res.longueur = longueur + ch.longueur; 
           res.adresse_dyn = new char[res.longueur+1]; 
           for(i=0;i!=longueur;i++) res.adresse_dyn[i] = adresse_dyn[i]; 
           for(i=0;i!=ch.longueur;i++)res.adresse_dyn[i+longueur] = ch.adresse_dyn[i]; 
           res.adresse_dyn [res.longueur] = '\0'; 
           return(res);
} 

char &chaine :: operator[](int i) 
{
             static char res = '\0'; 
             if(longueur != 0) 
             {
                         res =  *(adresse_dyn + i); 
                         return res;
             }
}

chaine :: ~chaine()
{
       delete adresse_dyn;
} 

void chaine :: affiche() 
{ 
              for(int i = 0; i != longueur; i++)
              {
              cout << adresse_dyn[i];
              }
              cout << endl;
} 

int main() 
{
     chaine a("Bonjour "), b("Maria"), c, d("Bonjour "), e; 
     if(a == b)
     {
             cout << "Gagne !\n";
     }
     else 
     {
             cout << "Perdu !\n";
     } 

     if(a == d)
     {
             cout << "Gagne !\n";
     }
     else 
     {
             cout << "Perdu !\n";
     } 
 
     cout << "a: " << endl;
     a.affiche(); 
     cout << "b: " << endl;
     b.affiche(); 
     cout << "d: " << endl;
     d.affiche(); 
     c = a+b; 
     cout << "c: " << endl;
     c.affiche(); 
     for(int i=0; c[i]!='\0'; i++)
     {
             cout << c[i];
     } 
getch();
}


Déjà la grande différence avec ce que j'ai fait il utilise un pointeur dans la classe et moi je n'utilise juste qu'une chaine de carcatères!
Ensuite tu entends quoi par il manque plein de constante?
Pour finir pourquoi son programme ne marche pas? Car le mien je sais il est archi-mauvais! Quand je le compile chez moi il n'est pas capable d'afficher b et d il me met des caractères bizarres!
Merci d'avance
Hors ligne lmghs # Posté le 22/05/2008 à 15:33:51
Groupe : Membres
Cet exo a encore été corrigé ici même il y a moins de 10 jours (et encore)
 
Hors ligne Ptt-homme # Posté le 22/05/2008 à 15:37:04
Groupe : Membres
Bien mais tu sais pas comment je retrouve le lien sert à rien qu'il y ai deux poste pour la même chose?

Oui j'ai bien trouvé le sujet mais il n'y a pas la solution, que des brides de solution qui me dise que je pensais avoir compris les pointeurs mais qu'il n'en est rien! Cependant j'aimerais quand même savoir pourquoi la solution que j'ai trouvée sur internet ne marche pas! J'ai vraiment besoin d'avoir cet exo corrigé!
Édité le 22/05/2008 à 15:57:03 par Ptt-homme
Hors ligne MatteX # Posté le 22/05/2008 à 16:19:35
The cake is a lie!
Avatar
Groupe : Membres
Exemples corrects de surcharges d'opérateurs. Et encore j'ai pas utiliser inline.


En passant, je ne sais pas si c'est une demande du prof mais outre les classes de la SL on voit souvent des classes avec une Majuscule.

Note : Sur VC++80, les fonctions déclarées dans les headers C pour C++ (soit sans '.h' et préfixé d'un c, ex : cstdio) font parti de l'espace de noms std.
Code : C++
 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
54
55
56
57
58
59
// déclaration (.h)
// ...

class Chaine
{
    char * m_chaine;
    size_t m_longueur;

public:
    // ...
    bool operator ==( const Chaine & c ) const;
    Chaine& operator =( const Chaine & c );
    Chaine& operator +=( const Chaine & c );
};

Chaine operator +( const Chaine & gauche, const Chaine & droite );

// definition (.cpp)
#include <cstring>

#include "Chaine.h"

bool Chaine::operator ==( const Chaine & c ) const
{
    // Bon si tu ne peux pas utiliser strcmp change ceci par ton algo de comparaison.
    return std::strcmp( ma_chaine, c.ma_chaine ) == 0;
}

Chaine& Chaine::operator =( const Chaine & c )
{
    // m_longueur + 1 si la longueur ne contient pas le '\0' final!
    char * tmp = new char[ c.m_longueur ];
    std::strcpy( tmp, c.m_chaine );    
    
    m_longueur = c.m_longueur;
    delete [] m_chaine;
    m_chaine = tmp;

    return *this;
}

Chaine& Chaine::operator +=( const Chaine & c )
{
    // +1 si m_longueur new contient pas le '\0' final, -1 sinon.
    char * tmp = new char[ m_longueur + c.m_longueur - 1 ];
    std::strcpy( tmp, m_chaine );
    std::strcat( tmp, c.m_chaine );    
    
    m_longueur = m_longueur + c.m_longueur - 1;
    delete [] m_chaine;
    m_chaine = tmp;

    return *this;
}

Chaine operator +( const Chaine & gauche, const Chaine & droite )
{
    return (Chaine( gauche ) += droite);
}


Note que le pointeur de chaîne ne doit JAMAIS être nul. Il devrait TOUJOURS pointer vers un espace mémoire valide !

Pour le inline, je ne sais pas si quelqu'un peut me répondre. Serait-il plus avantageux de déclarer mon opérateur '+' inline?

En C++ tout les opérateurs de comparaison (==, !=, <, <=, >, >=) retournent un booléen. Les opérateurs d'affectation retournes une référence sur *this. Les opérateur arithmétiques (+, -, *, -, %) retournent une copie du résultat. Pourquoi ? Pour permettre des lignes d'instructions comme celle-là.

Code : C++
1
2
Chaine a, b, c;
b += c = a + b;


Bon je penses que j'ai fait plus de 50% de ton travail... Pour les pointeurs va falloir que tu révises. D'ailleurs une bonne question que tu devrais te poser (et j'interdit quiconque de répondre à sa place) est « Pourquoi l'utilisation d'un temporaire pour conserver la chaine dans l'opérateur d'affectation ? ». Si tu sais répondre à ça c'est que tu comprend déjà moindrement les pointeurs.
Édité le 22/05/2008 à 16:27:36 par MatteX

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Ptt-homme # Posté le 22/05/2008 à 18:29:28
Groupe : Membres
Merci pour ta réponse, je n'ai pas le temps de répondre à ta question maintenant, mais je le ferai ce soir! Par contre pour le devoir le prof à demander de rédiger le devoir comme je te l'ai donné pas en utilisant des bools et autres c'est pour cela que je voulais savoir où se trouvait l'erreur dans le deuxième algo que j'ai fourni!
Hors ligne lmghs # Posté le 22/05/2008 à 18:33:25
Groupe : Membres
Pour les mêmes raisons que pour la concaténation, la comparaison devrait être libre.

Sinon, je suis assez perturbé par longueur qui puisse contenir le 0 terminal. Pour la capacité quelque part d'accord, pour la longueur pas vraiment, car length() devra soustraire ce 1 de trop.


Et ... (subtilité) ... si on veut miner le comportement de std::string, il ne faut pas utiliser les fonctions str*(), mais les mem*(). Une std::string peut contenir un 0, ou plusieurs, cela n'aura aucun impact sur sa longueur.
 
Hors ligne Ptt-homme # Posté le 22/05/2008 à 21:19:08
Groupe : Membres
Code : C++
  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
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <conio.h> 

using namespace std;

class chaine 

{
      private :
      
              int longueur; 
              char *adresse_dyn; 

      public: 

              chaine(); //constructeur1 
              chaine(char *); //constructeur2  
              ~chaine(); //destructeur
              void operator =(chaine &); 
              int operator ==(chaine); 
              chaine &operator +(chaine); 
              char &operator [](int); 
              void affiche();
}; 

  

chaine :: chaine()  //constructeur1 
{
       longueur = 0;
       adresse_dyn = new char[1];
}

  

chaine :: chaine(char *texte)   // constructeur2 
{
       int i; 
       for(i=0;texte[i]!='\0';i++); 
       longueur = i; 
       adresse_dyn = new char[longueur+1]; 
       for(i=0;i!=(longueur+1);i++) adresse_dyn[i] = texte[i];
} 

void chaine :: operator =(chaine &ch) 
{  
            longueur = ch.longueur; 
            adresse_dyn = new char[ch.longueur+1]; 
            for(int i=0;i!=(longueur+1);i++)
            {
                    adresse_dyn[i] = ch.adresse_dyn[i];
            }
} 

int chaine :: operator ==(chaine ch) 
{
           int i, res=1; 
           for(i=0;(i!=(longueur+1))&&(res!=0);i++)
           {
                     if(adresse_dyn[i]!=ch.adresse_dyn[i])res=0; 
                     return res;
           }
} 

chaine &chaine :: operator +(chaine ch) 
{
           int i; 
           static chaine res; 
           res.longueur = longueur + ch.longueur; 
           res.adresse_dyn = new char[res.longueur+1]; 
           for(i=0;i!=longueur;i++) res.adresse_dyn[i] = adresse_dyn[i]; 
           for(i=0;i!=ch.longueur;i++)res.adresse_dyn[i+longueur] = ch.adresse_dyn[i]; 
           res.adresse_dyn [res.longueur] = '\0'; 
           return(res);
} 

char &chaine :: operator[](int i) 
{
             static char res = '\0'; 
             if(longueur != 0) 
             {
                         res =  *(adresse_dyn + i); 
                         return res;
             }
}

chaine :: ~chaine()
{
       delete adresse_dyn;
} 

void chaine :: affiche() 
{ 
              for(int i = 0; i != longueur; i++)
              {
              cout << adresse_dyn[i];
              }
              cout << endl;
} 

int main() 
{
     chaine a("Bonjour "), b("Maria"), c, d("Bonjour "), e; 
     if(a == b)
     {
             cout << "Gagne !\n";
     }
     else 
     {
             cout << "Perdu !\n";
     } 

     if(a == d)
     {
             cout << "Gagne !\n";
     }
     else 
     {
             cout << "Perdu !\n";
     } 
 
     cout << "a: " << endl;
     a.affiche(); 
     cout << "b: " << endl;
     b.affiche(); 
     cout << "d: " << endl;
     d.affiche(); 
     c = a+b; 
     cout << "c: " << endl;
     c.affiche(); 
     for(int i=0; c[i]!='\0'; i++)
     {
             cout << c[i];
     } 
getch();
}


Je suis désolé de paraitre rabajois mais je ne trouve pas pourquoi le compilateur m'affiche


Perdu !
Gagne !
a:
Bonjour
b:
b>o -
d:
<>o X>o
c:
Bonjour b>o -
Bonjour b>o -


Voilà j'aimerais juste pouvoir comprendre car je suis sur que c'est un problème de pointeur
Hors ligne MatteX # Posté le 22/05/2008 à 23:22:23
The cake is a lie!
Avatar
Groupe : Membres
@lmghs : mmmh... je suis d'accord qu'il est assez incohérent de contenir la longueur avec le '\0' terminal. Et pour le fonctionnement de std::string c'est vrai, mais je ne voulais pas non plus imiter le fonctionnement du std::allocator.

1) affiche() cout peut affiche des char*

2) operateur == ne compare que le premier caractère

3) Tes fonctions passent en paramètre des copies d'objet et tu n'as pas défini de constructeur par copie. Alors à la fin de la fonction, la copie est détruite ; appel du destructeur ; desallocation de l'espace mémoire pointée par toutes les copies du même objet. Résultat tu te retrouve a lire n'importe quoi en mémoire comme "b>o -", ce qui a la même longueur que "Maria".

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Eclyps # Posté le 23/05/2008 à 11:19:38
Kenny Noël , Yep! Yep! Yep!
Avatar
Groupe : Membres
Faut vraiment essayer de ne pas mettre conio je pense pas que ça te donneras une très bonne note.
Conio n'est pas portable !
Si c'est juste pour le getch() de la fin mes getchar() de iostream c'est portable au moins.
Édité le 23/05/2008 à 11:19:54 par Eclyps

QScintilla Ma Playlist Image utilisateur
Image utilisateur No Life Test
Image utilisateur Geek Test
Image utilisateur Nerd Test
 
Hors ligne MatteX # Posté le 23/05/2008 à 15:27:52
The cake is a lie!
Avatar
Groupe : Membres
Citation : Eclyps
Faut vraiment essayer de ne pas mettre conio je pense pas que ça te donneras une très bonne note.
Conio n'est pas portable !
Si c'est juste pour le getch() de la fin mes getchar() de iostream c'est portable au moins.


Peut-être que oui, peut-être que non. Si son prof lui demande de faire un opérateur d'affectation qui retourne un void, je ne penses pas qu'il s'en fasse avec la portabilité ou les stantdards. Et s'il utilise conio.h c'est probablement parce que c'est la technique qu'il a vu en cours pour faire une "pause" à la fin d'un programme. Ce n'est pas mal en soi, et ça ne changera rien à sa note.

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Eclyps # Posté le 24/05/2008 à 09:50:14
Kenny Noël , Yep! Yep! Yep!
Avatar
Groupe : Membres
Citation : MicBeastKiller
Salut,
utilise les balises code C++.
mon compilo (je suis sous Code-Block) me signale deux oublis de ";" dans le code
Code : C++
1
2
if ((a==b)!=1) cout <<"perdu" else cout << "gagne !\n" ;
if ((a==d)!=1) cout <<"perdu" else cout << "gagne !\n" ;


il faut écrire

Code : C++
1
2
3
4
5
6
7
8
9
if ((a==b)!=1)
cout << "perdu";
else
cout << "gagne !\n" ;

if ((a==d)!=1)
cout <<"perdu";
else
cout << "gagne !\n" ;



pour le reste, j'ai pas encore regardé.





Faut ce qu'il à écrit peux être compiler sans erreur pas la pêne de de réécrire convenablement (il manquer juste 4 ; )
La preuve tu peux compiler ça le débogueur ne te dira rien du moment que tu n'oubliras rien ;p :
Code : C++
1
2
#include <iostream>
using namespace std;int main (){std::cout<<"bonjour"<<std::endl;int rrr;char ddd[]="ggg";getchar();}

Bien sûr aprés ça fais très très moche ^^ .

QScintilla Ma Playlist Image utilisateur
Image utilisateur No Life Test
Image utilisateur Geek Test
Image utilisateur Nerd Test
 
Hors ligne MatteX # Posté le 25/05/2008 à 00:58:47
The cake is a lie!
Avatar
Groupe : Membres
l'avantage d'écrire dans la forme qu'a présenté MicBeastKiller c'est qu'on oubli _jamais_ des point-virgules.

Que ça compile ne change rien, il doit écrire du code lisible dans le forum.

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 130 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.1437s (0.1232s)