nouvelle fonction....nouveau probleme...
le programe plante quand je met un "."
alors qu'il est censé convertir la chaine en double....
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 void detect_nb_flottant(struct string l) { double nb_tmp=0.; int i=0; struct elem *pelem = l.first; struct elem *point_droite; struct elem *point_gauche; while(pelem!=NULL ) { if (pelem->type == point) //on recherche le point { point_droite=pelem->prev; //premier element a droite du point point_gauche=pelem->next; //premier element a gauche du point while(point_gauche->type == number && point_gauche !=NULL) //on verifie que l'element est bien un chiffre { /* on calcul toute la partie gauche grace a la boucle (lecture de droite a gauche) */ nb_tmp=nb_tmp+(((point_gauche->value)-48)*pow(10,i)); // lorsqu'on li les unité i =0, les disaines i=1, les centaines i=2 i++; point_gauche = point_gauche->next; //on passe a point_gauche etant l'element de gauche qu'on test, on passe a l'element suivant free(pelem->next); //on detruit l'element testé pelem->next=point_gauche; //on remet a jour les pointeurs pelem->next->prev=pelem; //on remet a jour les pointeurs } //une fois la boucle terminée, l'element contenant le point va pointer sur l'element qui est apres les chiffre i=-1; //on fais pareil pour les chiffre apres la virgule (lecture de gauche a droite) while(point_droite->type == number && point_droite !=NULL){ nb_tmp=nb_tmp+(((point_droite->value)-48)*pow(10,i)); i--; point_droite = point_droite->prev; free(pelem->prev); pelem->prev=point_droite; pelem->prev->next=pelem; } pelem->value=nb_tmp; pelem->type=number; }i=0; pelem = pelem->next; } }
Partager