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 :

Fonction, mixage de deux tableaux en C


Sujet :

C

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Par défaut Fonction, mixage de deux tableaux en C
    Bonsoir à tous,

    je viens poster, parce que je survole un exo de partiel (de l'année dernière)
    Voilà l'énoncé :

    Ecrire une fonction C de nom "mixageTableaux" permettant de mixer (voir définition plus loin) deux tableaux d'entiers ayant la même taille et de mettre le résultat dans un autre tableau. On supposera que le tableau contenant le résultat a une taille suffisante.
    Définition du"mixage" de deux tableaux :
    La première case du tableau 1 va dans la première case du tableau résultat, la première case du tableau 2 va dans la deuxième case du tableau résultat.
    Puis, la deuxième case du tableau 1 va dans la troisième case du tableau résultat, la deuxième case du tableau 2 va dans la quatrième case du tableau résultat etc...

    Alors mon idée est de mettre en parametre de fonction : int t1[], int t2[], int size(taille de t1 et t2) et int *t3[]
    Alors est ce que quand je mets ces paramètre pour ma fonction le pointeur est bien placé, sachant que mon tableau t3 sera celui qui contiendra le mix des deux autres ?

    je comptais faire a peu près ça comme programme (mais malgré une aide qu'on m'a déja apporté sur ce forum, je reste frileuse avec les pointeurs et les tableaux) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void mixageTableaux( int t1[], int t2[], int size, int t3[])
    { 
     int i, j; 
     j = 0 ;
     
     for (i=0; i<size; i=i+1)
     { while (j<2*i)
       { *t3[j] = t1[i] ; 
         * t3[j+1]= t2[i] ; 
          j = j + 2 ; 
       }
     }
    }
    et du coup une autre question. Quand je fais mon programme principal qui utilisera cette fonction (si elle est correcte), je dois déclarer mes tableaux, mais je bug tout le temps. Notamment pour leur taille je suis obligée de mettre int t1[10] directement ou pas ? ou y'a t'il une façon qui ferait que c'est mon utilisateur qui l'a choisirai ?
    de plus je ne sais pas comment faire pour par exemple créer un tableau avec des valeurs qui serait des caractère par exemple : a, b, c etc...
    je dois faire : int t1[5]= {'a', 'b', 'c', 'd', 'e'}?

    voilà le programme que j'aurai fait pour me simplifier la vie (car dans la suite on nous demande de creer un programme qui utilise la fonction.)

    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
     
    int main()
    {
     int t1[3], t2[3];
     int size = 3 ; 
     int t3[6] ;
     
     for (i=0; i<size; i=i+1)
     { scanf("%d", &t1[i]) ;
        scanf("%d", &t2[i]) ; 
     }
     
     mixageTableaux ( t1, t2, size, &t3)
     
     for (i=0; i<2*size; i=i+1)
     { printf("%d\n", t3[i]) ; }
     return 0 ; 
    }
    Je vous demande ça ici, car je n'ai pas le moyen ce soir de l'executer...

    Merci d'avance pour vos réponse.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    dans la continuité de ce thread si je comprends bien

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Joaninha. Voir le message
    (...)
    Alors mon idée est de mettre en parametre de fonction : int t1[], int t2[], int size(taille de t1 et t2) et int *t3[]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (...)
     mixageTableaux ( t1, t2, size, &t3)
    (...)
    je me permets de te faire la même réponse que précédemment :
    Citation Envoyé par BufferBob Voir le message
    tu passes t1 et t2 correctement, t3 est un tableau d'entiers également je vois pas pourquoi tu le passe différemment à la fonction

    Citation Envoyé par Joaninha. Voir le message
    je dois déclarer mes tableaux, (...) je suis obligée de mettre int t1[10] directement ou pas ? ou y'a t'il une façon qui ferait que c'est mon utilisateur qui l'a choisirai ?
    si tu n'as pas vu l'allocation dynamique de mémoire (malloc) on va dire que non et qu'il vaudra mieux partir du principe que les tableaux sont tous fixés à l'avance, de toutes façons leurs tailles respectives dépendent les unes des autres implicitement, à partir du moment où on connait t1, t2 doit obligatoirement faire la même taille pour que la fonction fasse son job correctement, et donc on connait la taille de t3 aussi, c'est le double des deux autres

    Citation Envoyé par Joaninha. Voir le message
    de plus je ne sais pas comment faire pour par exemple créer un tableau avec des valeurs qui serait des caractère par exemple : a, b, c etc...
    je dois faire : int t1[5]= {'a', 'b', 'c', 'd', 'e'}?
    oui voilà, avec un ; au bout (tu as essayé ?)

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut
    Bonjour

    Normalement, ton compilateur aurait du t'afficher des erreurs de compilation : il faut les lire !!!!

    => c'est censé faire quoi ?

    => c'est censé faire quoi ? ... t3 est un tableau, t3[j] correspond à la valeur de l'index j de ce tableau, *t3[j] qui équivaut à *(*(t3+j)) correspond à la valeur qui est stoquée à l'adresse dont la valeur est t3[j].


    Le code :
    Peut être remplacé par :
    => ça évite de devoir modifier cette ligne situ change la taille de tes tableaux


    Une des solutions possibles (à lire une fois que tu auras résolu ton problème sur ton programme en lisant mes remarques précédentes) :
    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
     
    void mixageTableaux( int t1[], int t2[], int size, int t3[]){ 
    // Peut aussi s'ecrire :
    // void mixageTableaux( int * t1, int * t2, int size, int * t3){ 
    // => c'est exactement la même chose : on voit pourquoi il faut impérativement passer en paramètre la taille des tableau.
     
    	int i; 
    	int * ptOut;
     
    	ptOut = t3;
    	for (i=0; i<size; i++){
    		*ptOut = t1[i];
    		ptOut++;
    		*ptOut = t2[i];
    		ptOut++;
     
    		// le code précedent peut aussi s'ecrire comme ça :
    		//*ptOut++ = t1[i];
    		//*ptOut++ = t2[i];
    	}
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/01/2013, 13h16
  2. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  3. [Tableaux] Une fonction pour comparer deux tableaux ?
    Par renaud26 dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2009, 11h11
  4. Concaténation de deux tableaux
    Par mego dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2008, 11h52
  5. Réponses: 8
    Dernier message: 01/12/2006, 09h05

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