Bonjours,
Je passe un tableau de pointeurs en paramètre d'une fonction, qui a été préalablement initialisé à certaines valeurs, et quand je le récupère dans le fonction les valeurs ne sont plus les même ! :s
Voilà mon code :
Je ne sais pas si ça peut aider, mais voilà ce que j'optient à l'éxecution :
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 void kruskal2 (struct arc* sommets [], struct arc* kruskal [], int nbrSommets) { int *peres [nbrSommets]; int i, nbrArcs=0; for (i=0; i<nbrSommets; i++) { peres [i]=&i; } for (i=0; i<nbrSommets; i++) { printf ("peres [%d]=%d.\n", i, *peres [i]); } while (nbrArcs<nbrSommets-1) { printf ("Je suis dans le while, nbrArcs=%d.\n", nbrArcs); for (i=0; i<nbrSommets; i++) { printf ("peres [%d]=%d.\n", i, *peres [i]); } nbrArcs=arcMin2 (sommets, kruskal, nbrSommets, peres, nbrArcs); } } int arcMin2 (struct arc* sommets [], struct arc* kruskal [], int nbrSommets, int *peres [], int nbrArcs) { int racineD, racineA, sommetD, sommetA, poid, sommetDTemp, sommetATemp, poidTemp=-1, i; printf ("Je passe dans arcMin2.\n"); for (i=0; i<nbrSommets; i++) { printf ("peres [%d]=%d.\n", i, *peres [i]); } for (i=0; i<nbrSommets; i++) { if (poidTemp==-1 || sommets[i]->poid<poid) { sommetDTemp=i+1; sommetATemp=sommets[i]->sommetArrive; poidTemp=sommets[i]->poid; racineD=pere (peres, sommetDTemp); racineA=pere (peres, sommetATemp); if (racineD==racineA) { poid=-1; } else { sommetD=sommetDTemp; sommetA=sommetATemp; poid=poidTemp; } } } insererArc (kruskal, sommetD, sommetA, poid); insererArc (kruskal, sommetA, sommetD, poid); *peres [sommetA-1]=sommetD-1; return nbrArcs+1; }
Est-ce que quelqu'un aurait une idée ?
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 peres [0]=0. peres [1]=1. peres [2]=2. peres [3]=3. peres [4]=4. peres [5]=5. peres [6]=6. peres [7]=7. peres [8]=8. peres [9]=9. peres [10]=10. peres [11]=11. Je suis dans le while, nbrArcs=0. peres [0]=0. peres [1]=1. peres [2]=2. peres [3]=3. peres [4]=4. peres [5]=5. peres [6]=6. peres [7]=7. peres [8]=8. peres [9]=9. peres [10]=10. peres [11]=11. Je passe dans arcMin2. peres [0]=12. peres [1]=12. peres [2]=12. peres [3]=12. peres [4]=12. peres [5]=12. peres [6]=12. peres [7]=12. peres [8]=12. peres [9]=12. peres [10]=12. peres [11]=12.
J'ai une autre question qui n'a rien à voir. Pour l'écriture dans un fichier je voudrais pouvoir me déplacer afin d'écrire quelque chose au début du fichier après avoir écrit la fin. J'ai essayé avec la fonction fseek, sauf que quand j'écris ce que j'ai à écrire ça efface les caractères suivant, et comme je ne connais pas d'avance la taille de ce que j'ai besoin d'écrire je ne peux pas laisser suffisament de "caractères à effacer".
Merci d'avance pour votre aide.
Partager