bonjour,
Le programme ci-dessous fonctionne.
Si on essaye de le transformer en fonction il ne fonctionne plus.
Deux variables posdeb1 et posfinresul1 n'ont pas de valeur en sortie de fonction même si je les inclue dans la déclaration de fonction.
Pour tester il faut faire qq modifs:// à supp. ou ajouter.
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
 
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
 
using namespace std;
 
string raj1 = ".....";                              //espace maxi à occuper
string resul1="Ab";                                 //chaine à justifier à droite
 
int main()
{
    cout <<"raj.tot.:"<< raj1<<"|espace max a occuper"<<endl;
    cout <<"res.ori.:"<< resul1 <<"|   chaine a just a dr."<<endl;
//long resul1
    int iresul1, tailleresul1 = resul1.size ();
//long raj1
    int iraj1  , tailleraj1   = raj1  .size ();
//découp. de raj1
          int posdeb1=0;
          int posfinraj1=tailleraj1-tailleresul1;
          raj1= raj1.substr(posdeb1,posfinraj1);
//conc.          
          resul1=raj1+resul1;
//appel fonction just(ajouter//aux lignes précédentes..)          
//string just (string raj1 ,string resul1);//supprimer les //       
   cout <<"     raj:"<<raj1<<"|  espace a rajouter"<< endl;
   cout <<"     res:"<<resul1<<"|chaine justifiee"<<endl;
cout << "<E/Quitter>" << endl;
char c=getchar();switch (c){case '\r':;break;} 
}   
 
//déclaration fonction just
string just (string raj1 ,string resul1)
{
//long.resul1
    int iresul1, tailleresul1 = resul1.size ();
//long.raj1
    int iraj1  , tailleraj1   = raj1  .size ();
//découp.raj1
          int posdeb1=0;
          int posfinraj1=tailleraj1-tailleresul1;
          raj1= raj1.substr(posdeb1,posfinraj1);
//conc.          
          resul1=raj1+resul1;
          return resul1;      
}
Que voyez-vous de mal fait?
Avec mes remerciements.