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 :

Insérer valeur dans un tableau trié


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Insérer valeur dans un tableau trié
    Bonjour à tous,

    Voilà mon problème :
    J'ai une suite d'indices qui va de 0 à n et 2 tableaux triés A et B contenant chacun une partie de ces indices mais un nombre ne peut être que dans un seul tableau. Imaginons que j'ai la suite d'indices qui va de 0 à 9 et que j'ai par exemple ces 2 tableaux-ci dessous:

    A = 0 2 3 5 6 7 0 0 0 0
    B = 1 4 8 9 0 0 0 0 0 0

    Une fois la mémoire allouée, les 2 tableaux sont au début initialisés à 0 et ont donc une taille fixe.
    Le problème c'est que je n'arrive pas à savoir comment faire pour qu'à l'étape d'après j'obtienne par exemple :

    A = 0 1 2 3 5 6 7 0 0 0
    B = 4 8 9 0 0 0 0 0 0 0

    et qu'ensuite j'arrive à :

    A = 1 0 0 0 0 0 0 0 0 0
    B = 0 2 3 4 5 6 7 8 9 0

    Le fait d'initialiser à 0 n'est pas forcément une bonne idée d'ailleurs ...
    Voilà j'aimerai savoir si vous avez des idées sur comment faire ça.

    Merci d'avance

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Qu'est-ce qui te pose problème ? Est-ce l'algo ou son implémentation en C ? À quel niveau ?

    Petite digression : ton schéma est bien mais utiliser autre chose que le caractère zéro pour les cases non utilisées (* par exemple) le rendrait encore plus clair, puisqu'au final la valeur de ces cases n'a pas d'importance.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait le problème du 0 je l'ai résolu en initialisant les cases des tableaux à n+1 si je considère une suite d'élément jusqu'à n parce qu'en fait le premier 0 j'en ai besoin.

    Oui c'est au niveau de l'implémentation en C. En fait j'ai pensé à "coller" les indices qui m'intéresse du tableau B dans le tableau A dont je connais la taille "qui m'est utile". Ensuite il faudrait que je trie le tableau A (je sais qu'il y a beaucoup d'algorithme de tri surement déjà codé en C donc je devrais en trouver un) et le tableau B je voudrais savoir comment "effacer" les éléments dont je me suis servi. Par exemple quand on a :

    A = 0 2 3 5 6 7 0 0 0 0
    B = 1 4 8 9 0 0 0 0 0 0

    et qu'on passe à :

    A = 0 1 2 3 5 6 7 0 0 0
    B = 4 8 9 0 0 0 0 0 0 0

    j'aimerai savoir comment implémenter en C le fait de "supprimer" la case qui a le nombre 1 du tableau B.

  4. #4
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Tu dois simplement décaler les éléments qui suivent les éléments insérés. Si les deux tableaux sont triés alors une passe suffit en commençant par la fin.

    Trier le tableau a posteriori est effectivement une autre possibilité.

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Pour décaler les éléments d'un tableau n'ayant que des éléments 'simples'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memmove( &B[0] , &B[1] , sizeof(B) - sizeof(*B) );
    va déplacer ce qu'il y a à partir de B[1] vers la position de B[0] pour tous les éléments moins 1. Le dernier sera inchangé. On aura ainsi ôté le premier.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci à vous deux j'avais plus fait attention à la conversation.
    En fait j'ai collé les éléments du tableau B dans le tableau A à partir de la dernière case disponible puis j'ai parcouru le tableau B pour mettre les valeurs que je ne voulais plus à une valeur "clé" et ensuite j'ai fait un tri fusion.
    Si vous pensez qu'il y a un algorithme de tri plus adapté à mon cas je suis preneur.
    Le tableau A ressemble par exemple à ca :

    A = 0 2 3 5 6 7 11 11 4 1

    La valeur "clé" est le 11.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/04/2010, 12h39
  2. Réponses: 13
    Dernier message: 31/01/2010, 10h58
  3. Réponses: 3
    Dernier message: 06/12/2009, 15h02
  4. Insérer des valeurs dans un tableau
    Par bassiste dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/12/2008, 13h44
  5. Tri des valeurs dans un tableau
    Par kikiarch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2007, 07h46

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