IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

pointeurs et tableau


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut pointeurs et tableau
    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 !

    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;
    }  
    }
    Merci d'avance pour votre aide .
    Dernière modification par gl ; 24/01/2010 à 13h16.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 20/10/2006, 13h19
  2. Accès le plus rapide: Pointeur ou tableau?
    Par homeostasie dans le forum C
    Réponses: 21
    Dernier message: 01/09/2006, 14h08
  3. [VB.NET] Pointeur vers tableau
    Par b_lob dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/08/2006, 16h06
  4. convertion pointeur vers tableau
    Par gdpasmini dans le forum C++
    Réponses: 2
    Dernier message: 30/03/2006, 00h34
  5. Pointeur et TAbleau
    Par melmouj dans le forum C
    Réponses: 20
    Dernier message: 25/09/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo