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 :

Permuter et concaténer les éléments de tableau


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut Permuter et concaténer les éléments de tableau
    Bonjour,j'ai besoin de votre aide svp
    j'ai 2 tableaux indexés par i(i=1,2),
    chaque tableau contient des entiers
    par exemple le tableau 1 contient dans la case 1 l’élément 5
    la case 2 contient l'élément 8.
    le tableau 2 contient 3 éléments
    la case 1 l’élément 7
    la case 2 l’élément 9
    la case 3 l’élément 3
    je voudrais permuter les éléments du tableau 1
    permuter les éléments du tableau 2
    et créer un nouveau tableau qui contient les élément du tableau 1 +les éléments du tableau 2(la concaténation des 2 tableaux après permutations)

    comment puis je faire cela?
    merci pour votre aide

  2. #2
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    Permuter les éléments du tableau 1 avec celui du tableau 2?

    Dans tous les cas tu vas avoir besoin d'une fonction d'échange et au moins 1 boucle plus un tableau alloué dynamiquement ou passé en paramètre de taille tableau 1 + tableau 2.


  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Par défaut
    Bonjour,

    Le principe, pour permuter 2 éléments, est d'utiliser momentanément une variable "tampon" :
    On copie l'élément 1 dans le tampon,
    On remplace l'élément 1 par l'élément 2
    Et on remplace l'élément 2 par le tampon.

    Si il y a plus de 2 éléments il faut définir le type de permutation que l'on veut faire (permutation circulaire, etc ...).

  4. #4
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Bonjour,je veux faire une permutation aléatoire des éléments de chaque tableau,comment faire ceci svp?
    Merci

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Par défaut
    Sur un tableau de 2 éléments : on choisit au hasard (Cf fonction "rand") de les permuter ou de ne pas les permuter !

    Sur un tableau de n éléments : on peut, par exemple, prendre les éléments de 1 à n et on les permute à chaque fois avec un autre choisi au hasard parmi les n.

  6. #6
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Bonjour,
    voila une idée de ce que j'ai essayé de faire:
    je vais créer un premier tableau de taille (1,3)
    créer un deuxieme tableau de taille (1,2)
    remplir les deux tableaux
    permuter les elements du premier tableau
    permuter les elements du deuxième tableau
    crer un troisième tableau
    concaténer les éléments ds 2 premiers tableaux et les placer dans le 3 éme tableau
    comment traduire cela en C?
    merci

  7. #7
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Par défaut
    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
     
    int[] permut(int tab[],int indice1,int indice2){
    int tmp = tab[indice1];
    tab[indice1] = tab[indice2];
    tab[indice2] = tmp;
    }
     
    void main(){
    int tab1[2]; int tab2[3]; int tab3[5];
     
    tab1[0]=1;
    tab1[1]=2;
    tab2[0]=3;
    tab2[1]=4;
    tab2[2]=5;
     
    //fait la permutation
    //a toi de le faire
     
    //fait la concatenation
    //tab[3] = memset ......
    //a toi de le faire
    }
    on ne va pas tout faire à ta place

  8. #8
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    AASProni: Ça existe pas int[] comme retour de fonction en C.

    void main() compile peut être mais c'est pas standard.


  9. #9
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Citation Envoyé par AASProni Voir le message
    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
     
    int[] permut(int tab[],int indice1,int indice2){
    int tmp = tab[indice1];
    tab[indice1] = tab[indice2];
    tab[indice2] = tmp;
    }
     
    void main(){
    int tab1[2]; int tab2[3]; int tab3[5];
     
    tab1[0]=1;
    tab1[1]=2;
    tab2[0]=3;
    tab2[1]=4;
    tab2[2]=5;
     
    //fait la permutation
    //a toi de le faire
     
    //fait la concatenation
    //tab[3] = memset ......
    //a toi de le faire
    }
    on ne va pas tout faire à ta place
    bonjour,
    merci pour votre suggestion,
    c'est quoi le in[]?est ce je peux definir ma fonction permutation sous cette forme
    int permut(int tab[],int indice1,int indice2)
    sans les 2 crochets?
    merci

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 404
    Par défaut
    Le plus simple, ce serait void permut(int tab[], int indice1, int indice2). Tu n'as pas besoin d'un retour ici, du moment que les paramètres sont valides.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Par défaut
    Voici un petit exemple pour montrer le principe de la permutation.
    Une bonne précaution serait de rajouter dans la fonction permut() une vérification que les indices sont bien inférieurs à la taille du tableau (sinon risque de plantage).
    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
     
    #include <stdlib.h>
    #include <stdio.h>
     
    void permut(int tab[], int indice1, int indice2)
    {
        int tampon=tab[indice1];
        tab[indice1]=tab[indice2];
        tab[indice2]=tampon;
    }
     
    int main(int argv, char* argc[])
    {
        int tab2[3];             // tableau de 3 entiers
        tab2[0]=3;tab2[1]=4;tab2[2]=5;
        printf("Tableau origine          : %i %i %i \n",tab2[0],tab2[1],tab2[2]);
     
        permut(tab2, 0, 2);      // on permute le premier et le dernier
     
        printf("Tableau avec permutation : %i %i %i \n",tab2[0],tab2[1],tab2[2]);
     
        return EXIT_SUCCESS;
    }

  12. #12
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Merci pour votre aide,j'ai exécuté ce programme il permute le premier et le dernier élément d'un tableau.
    si par exemple on veut enlever un peu les barres et rendre le problème un peu complexe et faire une permutation aléatoire des élément d'un tableau comment peut -on procéder?
    Merci.

  13. #13
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 404
    Par défaut
    Il y a des algorithmes connus pour ça: Algorithme de Fisher-Yates
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Il y a des algorithmes connus pour ça: Algorithme de Fisher-Yates
    bonjour,
    merci pour la suggestion,
    je veux ecrire cet
    pour i de n - 1 descendant_à 1 :
    j ← nombre aléatoire entier 0 ≤ j ≤ i
    échanger a[j] et a[i]


    algorithme en langage C
    voila le code que j'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int temp,i,j;
    {
    for(j=n-1,j<n,j--)
    a[j]=temp
    temp=a[i]
    temp=a[j]
    }
    merci pour vos suggestion.

  15. #15
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 404
    Par défaut
    Déjà, maintenant que tu as une fonction permut(), utilises-là.
    Ensuite, ce qu'il te manque, c'est la fonction rand() (on verra plus tard pour éviter d'avoir les mêmes valeurs à chaque exécution du programme, fais d'abord un code qui marche).

    rand() retourne un entier entre 0 et RAND_MAX (inclus). Normalement il faut faire un calcul basé sur une division flottante pour avoir un truc bien équiprobable, mais au début on peut s'en sortir avec un modulo.

    Voilà, normalement tu devrais avoir la base d'une permutation aléatoire, qu'on pourra améliorer ensuite.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    bonjour,
    j'ai besoin d'une permutation aléatoire des éléments d'un tableau

  17. #17
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 404
    Par défaut
    On t'a donné toutes les clés qu'il fallait.
    Ici c'est developpez.net, pas onfaitvosdevoirs.net.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Bonsoir,
    j'ai fais le code de concaténation ou de fusion
    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 fus[m];
     
    	    for(i=0;i<n;i++) { fus[i]=t[i];
    						 }
    	       for(i=0;i<nb;i++) { fus[i+n]=t1[i];
    					  }
    	          printf("Tableau fusionne\n");
     
    	            for(i=0;i<m;i++) printf("%5d",fus[i]);
     
    	               printf("\n");
     
     
    	   system("pause");
     
    	   return 0;
     
    }
    il me reste la permutation aléatoire des éléments d'un tableau,merci pour votre aide.

  19. #19
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    nanosoft t'a donné la fonction de permutation. Passe lui des indices aléatoires par rapport à la taille de ton tableau c'est tout. Pour l'aléatoire, Médinoc t'a donné la façon de faire.

    Pour ton code de fusion, tu trouve ça lisible toi? Indentation.


  20. #20
    Membre actif
    Inscrit en
    Mai 2013
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 83
    Par défaut
    Bonjour, j'ai exécuté ce programme,il marche bien,mais si on veut elargir cela à plusieurs tableau?

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/07/2014, 12h17
  2. [MySQL] délais dans une boucle entre les éléments du tableau
    Par dancom5 dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 16/03/2012, 16h07
  3. Réponses: 10
    Dernier message: 27/11/2008, 00h23
  4. Corriger cet Algo et trier les éléments du tableau en ordre décroissant
    Par PIMPMAX dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 07/01/2007, 20h25
  5. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 20h50

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