Probleme de pointeur en c

Résolu
xave4552 Messages postés 54 Statut Membre -  
xave4552 Messages postés 54 Statut Membre -
Bonjour,
Voilat je commence a utiliser les pointeurs et j'ai un petit problème.
En effet je veut inverser l'ordre des valeurs d'un tableau.
Voilat le résultat du code:
Première colone tableau courant deuxieme colonne tableau précedent.
t[0]= -33686019 t2[0]= 0
t[1]= 9 t2[1]= 1
t[2]= 8 t2[2]= 2
t[3]= 8 t2[3]= 4
t[4]= 7 t2[4]= 4
t[5]= 4 t2[5]= 4
t[6]= 4 t2[6]= 7
t[7]= 4 t2[7]= 8
t[8]= 2 t2[8]= 8
t[9]= 1 t2[9]= 9
Je pense que cela vien de l'utilisation des pointeurs ?
Voici la fonction:

void inversion(int *t, int taille){
int i, buffer;
for (i = 0 ; i < taille /2 ; i ++){
buffer = *(t+i);
*(t+i) = *(t+(taille-i));
*(t+(taille-i)) = buffer;
};
};
Si quelqu'un aurait une solution ce serait sympa. Merci.
Configuration: Windows XP
Opera 9.64

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Je te donne un exemple :

    #include <stdio.h>
    
    static void affichage(const int* const, const size_t);
    static void inverse(int*, const size_t);
    
    static void affichage(const int *const tab, const size_t sz) {
        size_t i=0;
    
        while(i<sz) printf("%d ",tab[i++]);
    
        putchar('\n');
    }
    
    static void inverse(int *const tab, const size_t sz) {
        size_t i;
    
        for(i=0;i<sz/2;i++) {
            int buffer=tab[i];
            tab[i]=tab[sz-i-1];
            tab[sz-i-1]=buffer;
        }
    }
    
    int main(void) {
        int tab[]={0,1,2,3,4,5,6,7,8,9};
        affichage(tab,sizeof tab/sizeof *tab);
    
        inverse(tab,sizeof tab/sizeof *tab);
        affichage(tab,sizeof tab/sizeof *tab);
        
        return 0;
    }
    
    

    Et la trace :

    ./xave
    0 1 2 3 4 5 6 7 8 9
    9 8 7 6 5 4 3 2 1 0


    Cdlt
    3
  2. mindslight Messages postés 87 Statut Membre 12
     
    Bonjour,

    Tu peux utiliser l'opérateur XOR (ou exclusif) pour échanger deux variables sans l'aide d'une troisième.

    int x = 42;
    int y = -21;
    x = x^y;
    y = x^y;
    x = x^y;

    /*
    ** Ici x = -21 et y = 42
    */

    Attention cela fonctionne que avec des types scalaires (int, long, char, ...) mais pas de structure par exemple.
    0
  3. xave4552 Messages postés 54 Statut Membre
     
    Ok merci
    0