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 :

travailler avec des tableaux


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 9
    Points
    9
    Par défaut travailler avec des tableaux
    Bonjour et bien j'ai un petit soucis qui me tracasse encore un tout petit peu mais ce n'est qu'un petit truc qui doit etre simple pour vous! Pour le moment j'ai une fonction qui fait le flip avec le calloc et sizeof mais j'aimerais tout simplement remplacer cette fonctionalité un peu plus compliqué pour travailler que avec des tableaux du genre img[i] [j]! vous comprenez! Et je dois egalement travailer avec un struct pour definir un pixel. Je l'ai fait de cette facon à moins que vous voyezmieux autrement!


    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct pixel 
    int R;
    int G;
    intb;
    return;
    et ensuite je pensais faire une fonctiuon swap!

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void swap(int a, int b)
    {
    int temp;
    temp=a;
    a=b;
    b=temp;
    return;
    }
    et pour finir avec mon flip avoir une fonction de telle sorte:

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void flip_hor(struct pixel im[MAX][MAX], int row, int col)
    {
    int i,j;
    for (i=0; i<row/2; i++)
    for (j=0; j<col; j++)
    swap(&im[i][j].R, &im[lignes-1-i][j].R);
    swap(&im[i][j].G, &im[lignes-1-i][j].G);
    swap(&im[i][j].B, &im[lignes-1-i][j].B);
    au lieu de cela qui est bcp plus compliqé!


    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tabElementRouge =( int *) calloc ( nb_colonnes, sizeof( int) );
    tabElementVert = ( int *) calloc ( nb_colonnes, sizeof( int) );
    tabElementBleu = ( int *) calloc ( nb_colonnes, sizeof( int) );

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    cette fonction est erronée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void swap(int a, int b)
    {
    int temp;
    temp=a;
    a=b;
    b=temp;
    return;
    }
    en effet ce que tu modifies c'est l'espace allouée sur la pile pour les PARAMETRES A et B. donc en sortie tuy ne fais rien :s

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    De plus, une structure ne se déclare pas ainsi (return ????)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct pixel 
    int R;
    int G;
    intb;
    return;
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct pixel 
    {
     int R;
     int G;
     int B;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void flip_hor(struct pixel im[MAX][MAX], int row, int col)
    {
    ....
    swap(&im[i][j].R, &im[lignes-1-i][j].R);
    Ne correspond pas à la fonction swap dont le code (faux) est donné précédemment. Mais ce type d'appel est celui à effectivement utiliser et il faut modifier la fonction swap en conséquence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void flip_hor(struct pixel im[][MAX], int row, int col)
    L'ennui de cette fonction flip_hor (le premier MAX est inutile et non signifiant) est qu'elle ne fonctionne que pour une seule valeur du paramètre col, celle qui est égale à MAX qui est fixé à la compilation. L'utilisation de cette fonction en est singulièrement réduit.
    Le code qui suit,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabElementRouge =( int *) calloc ( nb_colonnes, sizeof( int) );
    est une ébauche permettant de s'affranchir de cette limitation. C'est sans doute un vieux segment de code datant d'avant la définition de la structure et qui maintenant devrait être qq chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct pixel ** tabElement= calloc(nb_lignes, sizeof(struct pixel*));
    // a ajouter le test de retour du calloc
    for(i=0; i<nb_lignes;i++)
       tabElement[i] = calloc(nb_colonnes, sizeof(struct pixel));
    // a ajouter les tests de retour des calloc

Discussions similaires

  1. Travailler avec des gifs animés
    Par Commodore dans le forum Imagerie
    Réponses: 1
    Dernier message: 13/07/2006, 15h58
  2. Réponses: 8
    Dernier message: 09/03/2006, 17h48
  3. Travailler avec des hexadécimaux
    Par LEK dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 18/09/2005, 04h24
  4. Réponses: 3
    Dernier message: 25/01/2005, 11h27
  5. Travailler avec des bits
    Par Vulvulune dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2003, 19h09

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