Voila, j'ai écris un petit programme qui devrait me permettre de convertir une chaine de caractères en un type réel,
je dois convertir cette chaine la par exemple:
"0.2/5+0.56/10.1"
donc je dois en sortir le 0.2 le 5 le 0.56 et le 10.1
donc cette chaine est de forme " réel/ (réel ou entier) + réel / (réel ou entier)....."
Quand je compile le programme il n y a aucun probleme, mais lors de l'execution, que se soit sur visual c++ ou bien c++builder, le meme probleme se pose:
un message d'erreur
celui de builder me dit: "Project1.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru."
et a peu pres la meme chose en anglais avec visual.
voila mon programme:
une fonction qui me permet de savoir si c'est de type entier ou réel:
Ma fameuse fonction de conversion:
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 #pragma hdrstop #include <iostream.h> #include <stdlib.h> #include <string.h> #include <math.h> //Fonction qui renvoit le type de la chaine de caractère int type_chaine (char *t) { bool trouve=false ; char *nptr; nptr=t; while (*nptr!='\0' && !trouve ) { if (*nptr=='/') trouve =true ; nptr++; } if (trouve) return (2); else { nptr=t; while (*nptr!='\0' && !trouve) { if (*nptr=='.') trouve =true ; nptr++; } if (trouve) return (1); else return (0); } };
et enfin l'appel de cette fonction:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 // Fonction de conversion void convert_POSS (char *t) { int type; float resultat[40]; float puiss; //int sign=1; int i; char *nptr=t; //if (*nptr =='-') sign = -1; //if ((*nptr=='-') || ( *nptr=='+')) nptr++; while (*nptr!='\0') { i=0; while (*nptr!='.') { resultat[i]=resultat[i]*10+*nptr -48; nptr++; } nptr++; puiss=10; while (*nptr!='/') { resultat[i]=resultat[i]+(*nptr-48)/puiss; puiss*=10; nptr++; } // resultat[i]=resultat[i]*sign; nptr++; i++; type=type_chaine(t); if (type==1) { while (*nptr!='.') { resultat[i]=resultat[i]*10+*nptr -48; nptr++; } nptr++; puiss=10; while (*nptr!='+') { resultat[i]=resultat[i]+(*nptr-48)/puiss; puiss*=10; nptr++; } } else { while (*nptr!='+') { resultat[i]= resultat[i]* 10 + *nptr - 0x30; nptr++; } } // resultat[i]=resultat[i]*sign; nptr++; i++; } // return (resultat); }
J'espere que vous allez m'aider a résoudre ce problème!!!!
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 #pragma argsused int main(int argc, char* argv[]) { char a [40]; char *ptr =a; int l,i; l=1; float resultat [40]; while (l!=0) { cout << "donner la chaine : "; cin >> a; convert_POSS(ptr); for(i=0;i<40;i++) cout << resultat[i] <<endl; cout << "voulez vous continuez (0,1) : "; cin >> l; } return 0; }
Merci..
Partager