Bonjour,
Je dois réinventer la poudre mais c'est pour apprendre le c. Je suis débutant et les pointeurs ne sont vraiment pas mes amis. J'ai passé beaucoup de temps à lire des manuels mais je m'embrouille, surtout qu'il y a plusieurs façons d'écrire un pointeur.
Je vous montre mon programme qui est assez simple dans l'esprit.
Il est recursif (on fait ce qu'on peut ^^). Il y a la fonction DIJPIVOT qui tri et la fonction main qui l'appelle. Le compilateur me dit que le premier argument n'a pas la bonne "cast".
Que l'appel recursif (plus bas) est appelé avec un argument qui n'a pas de cast.
J'ai essayé de mettre int, (int*), int *enonce et d'autres encore mais gcc n'est jamais satisfait. Actuellement je pleure sur mon week end
HELP PLIZE !
Merci d'avance pour votre aide .
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
69
70
71
72
73
74 #include <stdio.h> #include <stdlib.h> #include <time.h> /* fonction de tri */ int DIJPIVOT(int enonce[2][8],int G,int D){ if(G<D){ int i=G+1; // on commence le tri a partir du deuxieme element int ip=G; // on choisit le premier élément de la portion du tableau à trier comme L'élément à ranger int X=enonce[1][G]; // on recupere sa valeur (deuxieme ligne) int temp0; int temp1; while(i<=D){// si le tableau contient au moins 2 colonnes if(enonce[1][i]<=X){ // si l'élément courant est plus petit que notre element à ranger if(i!=ip+1){ // si l'element courant n'est pas juste après l'element à ranger temp0=enonce[0][i]; // on place l'élément courant (censé être avant) juste après l'element à ranger temp1=enonce[1][i]; enonce[0][i]=enonce[0][ip+1]; enonce[1][i]=enonce[1][ip+1]; enonce[0][ip+1]=temp0; enonce[1][ip+1]=temp1; } temp0=enonce[0][ip]; // on fait l'echange entre l'element plus petit et l'element à ranger temp1=enonce[1][ip]; enonce[0][ip]=enonce[0][ip+1]; enonce[1][ip]=enonce[1][ip+1]; enonce[0][ip+1]=temp0; enonce[1][ip+1]=temp1; ip++; } i++; } DIJPIVOT(enonce[2][8], G,ip-1); //on appelle recursivement la fonction sur les portions gauche et droite du tableau DIJPIVOT(enonce[2][8],ip+1, D); } return 0; // retour bon , la gestion d'erreur na pas encore été mise en place } int main(){ /*tableau à trier suivant les valeur de la deuxieme ligne (ASC) */ int enonce[2][8]; enonce[0][0]=1; enonce[1][0]=4; enonce[0][1]=2; enonce[1][1]=2; enonce[0][2]=3; enonce[1][2]=5; enonce[0][3]=4; enonce[1][3]=3; enonce[0][4]=5; enonce[1][4]=1; enonce[0][5]=6; enonce[1][5]=1; enonce[0][6]=7; enonce[1][6]=3; enonce[0][7]=8; enonce[1][7]=2; /*appel de la fonction de tri */ DIJPIVOT(int enonce[2][8],int 0,int 7); /*affichage du tableau trié */ int i; for(i=0;i<7;i++){ printf("%d ",enonce[0][i]); } printf("\n"); for(i=0;i<8;i++){ printf("%d ",enonce[1][i]); } return 0; } }
Partager