Bonjour,

je ne vois pas où manque le point-virgule

quelqu'un peut m'aider?
Code cpp : 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
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
137
138
139
140
141
142
143
144
145
146
147
#include <string>
#include <iostream>
#include "nombres.hpp"
 
nombre::nombre(bool signepositif,std::string valentiere,std::string valdecimale):positif(signepositif),entiere(valentiere),decimale(valdecimale) { }
 
nombre nombre::moitier(bool &impaire){
  std::string resultatentiere="";
  std::string copieentiere=entiere;//partie entiere
  char reste='0';
  char chiffrequotient;
  while(copieentiere!=""){
    switch(copieentiere[0]){
    case '0':case '1':
      chiffrequotient='0';
      break;
    case'2':case'3':
      chiffrequotient='1';
      break;
    case'4':case'5':
      chiffrequotient='2';
      break;
    case'6':case'7':
      chiffrequotient='3';
      break;
    case'8':case'9':
      chiffrequotient='4';
      break;
    }
    if(reste=='1')
      chiffrequotient+=(char)5;
    switch(copieentiere[0]){
    case'1':case'3':case'5':case'7':case'9':
      reste='1';
      break;
    default:
      reste='0';
    }
    resultatentiere+=chiffrequotient;
    copieentiere=copieentiere.substr(1);
  }
  std::string resultatdecimale="";
  if(!entier() || reste=='1'){
    std::string copiedecimale=decimale;//partie decimale
    while(copiedecimale!=""){
      switch(copiedecimale[0]){
      case '0':case '1':
	chiffrequotient='0';
	break;
      case'2':case'3':
	chiffrequotient='1';
	break;
      case'4':case'5':
	chiffrequotient='2';
	break;
      case'6':case'7':
	chiffrequotient='3';
	break;
      case'8':case'9':
	chiffrequotient='4';
	break;
      }
      if(reste=='1')
	chiffrequotient+=(char)5;//quotients égaux à 5,6,7,8,9
      switch(copiedecimale[0]){
      case'1':case'3':case'5':case'7':case'9':
	reste='1';
	break;
      default:
	reste='0';
      }
      resultatdecimale+=chiffrequotient;
      copiedecimale=copiedecimale.substr(1);
      if(copiedecimale==""&&reste=='1')
	copiedecimale="0";
    }
  }
  nombre resultat(positif,resultatentiere,resultatdecimale);
  resultat.normaliser();
  return resultat;
}
 
nombre nombre::doubler(){
  std::string nombre=entiere + decimale;
  std::string resultat="";
  char retenue=0;
  for(size_t i=nombre.size();i>0;i--){
    char onpause='\0';
    switch(nombre[i-1]){
    case '0':case '5':
      onpause='0';
      break;
    case '1':case'6':
      onpause='2';
      break;
    case '2':case '7':
      onpause='4';
      break;
    case '3':case'8':
      onpause='6';
      break;
    case '4':case'9':
      onpause='8';
    }
    onpause+=retenue;
    if(nombre[i-1]>='5')
      retenue=1;
    else
      retenue=0;
    resultat=onpause+resultat;
  }
  if(retenue==1)
    resultat="1"+resultat;
  int nbentiers=resultat.size()-decimale.size();
  nombre retour(positif,resultat.substr(0,nbentiers),resultat.substr(nbentiers));
  return retour;
}
 
bool nombre::entier(){
  bool estentier;
  if(decimale=="")
    estentier=true;
  else{
    estentier=true;
    for(size_t i=0;i<decimale.size();i++)
      if(decimale[i]!='0')
	estentier=false;
  }
  return estentier;
}
 
void nombre::ecrire(){
  if(positif)
    std::cout<<'+';
  else
    std::cout<<'-';
  std::cout<<entiere;
  if(!entier())
    std::cout<<','<<decimale;
}
 
void nombre::normaliser(){
  while(entiere.size()>1 && entiere[0]=='0')
    entiere=entiere.substr(1);
  while(decimale.back()=='0')
    decimale=decimale.substr(0,decimale.size()-1);
}
Code cpp : 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
#ifndef NOMBRES_HPP
#define NOMBRES_HPP
 
#include <string>
 
class nombre{
private:
  bool positif;
  std::string entiere,decimale;
public:
  nombre(bool signepositif,std::string valentiere,std::string valdecimale);
  bool entier();
  bool nul;
  nombre moitier(bool &paire);
  nombre doubler();
  void ecrire();
  void normaliser();
};
#endif


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
g++ -c nombres.cpp
nombres.cpp: In member function ‘nombre nombre::doubler()’:
nombres.cpp:115:9: error: expected ‘;’ before ‘retour’
  115 |   nombre retour(positif,resultat.substr(0,nbentiers),resultat.substr(nbentiers));
      |         ^~~~~~~
      |         ;
nombres.cpp:116:10: error: ‘retour’ was not declared in this scope
  116 |   return retour;
      |          ^~~~~~