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:
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);
	}
};
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
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);
}
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
 
 
#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;
}
J'espere que vous allez m'aider a résoudre ce problème!!!!

Merci..