Bonjour, je suis en train de suivre les exercices du livre de Claude Delannoy "Exercices en langage C++" et je bloque deja au 5eme exercice

L'exercie 4 demandait d'ecrire deux fonctions permettant d'intervertir la valeur de deux variables en utilisant une fonction utilisant l'adresse des variables et l'autres les references.

Voici ma solution :

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
 
      1 #include <iostream>
      2 using namespace std;
      3
      4 main() {
      5         void echangec(int *, int *);
      6         void echangeref(int &, int &);
      7
      8         int a, b;
      9         cout << "Donnez la valeur de A\net ensuite la valeur de B.\n";
     10         cin >> a >> b;
     11         cout << "Valeur de A: " << a << "\nValeur de B: " << b << "\n";
     12
     13         cout << "Appel de la 1ere fonction d'inversion.\n";
     14         echangec(&a, &b);
     15         cout << "Valeur de A: " << a << "\nValeur de B: " << b << "\n";
     16
     17         cout << "Appel de la 2nde fonction d'inversion.\n";
     18         echangeref(a, b);
     19         cout << "Valeur de A: " << a << "\nValeur de B: " << b << "\n";
     20
     21 }
     22
     23 void echangec(int * a, int * b) {
     24         int c;
     25         c = *a;
     26         *a = *b;
     27         *b =c;
     28 }
     29
     30 void echangeref(int & a, int & b) {
     31         int c;
     32         c = a;
     33         a = b;
     34         b = c;
     35 }
L'exercie 5 demande grosso modo la même chose. Une structure est déclarée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
struct essai
{
        int n;
        float x;
};
et je dois ecrire deux fonctions qui remettent les valeurs à 0.

Voici ce que j'ai tenté (avec d'autres essais bien entendu) :

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
 
      1 #include <iostream>
      2 using namespace std;
      3
      4 main()
      5 {
      6         void razc(struct *);
      7
      8         struct essai
      9         {
     10                 int n;
     11                 float x;
     12         };
     13
     14 }
     15
     16 void razc(struct * essai)
     17 {
     18         cout << essai->n;
     19 }
Et voici les messages d'erreurs à la compilation :

Citation Envoyé par g++ -o test structraz.cpp
structraz.cpp: In function `int main()':
structraz.cpp:6: error: syntax error before `)' token
structraz.cpp: At global scope:
structraz.cpp:16: error: syntax error before `essai'
structraz.cpp: In function `void razc(...)':
structraz.cpp:18: error: `essai' undeclared (first use this function)
structraz.cpp:18: error: (Each undeclared identifier is reported only once for each function it appears in.)
J'avoue ne pas comprendre d'ou vient mon erreur et je vous remercie d'avance pour vos réponses.

PS:
Citation Envoyé par gcc --version
gcc (GCC) 3.3.6 (Gentoo 3.3.6, ssp-3.3.6-1.0, pie-8.7.8 )
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.