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 :

Renverser ordre elements d'un tableau


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut Renverser ordre elements d'un tableau
    Bonjour, voila je me propose de résoudre un exo qui est le suivant!

    Nous avons un tableau T[0...n-1] d'entier donné. Et on veut renverser l'ordre de ses éléments, c'est a dire si par exemple on a:

    1 2 3 4 5 6 7 8 9 10

    On aura a la fin:

    10 9 8 7 6 5 4 3 2 1

    J'avais pensé a faire:

    T[i]=T[n-1-i]

    mais bien sur cela bloque au milieu du tableau!Je me suis alors demandé s'il n'y avait pas une fonction STL qui le faisait directement?

    Merci de votre éventuel aide!

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Oui bien sur, il y a std::reverse, mais j'imagine que le but de l'exo n'est pas d'utiliser la STL...

    Donc indice : il faut faire des échanges d'éléments.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    Oui mais on vient juste de voir STL maid par securité je vais essayer de faire les 2méthode!

    On ne doit pas utiliser un 2eme tableau pour faire cela!
    Alors oui merci c'est un échange d'éléments mais c'est bizarre je bloque alors que ça a l'air trop simple

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    C'est de l'algo soit dit en passant mais bon, colle tes deux tableaux l'un au dessus de l'autre, ça tiens à une opération élémentaire (y'a une fonction de la STL pour faire la dite opération), ça va te sauter aux yeux... (sur des petits tableaux) :

    1 2 3 4
    4 3 2 1

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    Oui pour les petits tableaux j'avais trouvé

    T[i]=T[4-i] par exemple pour ton exemple!

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Ben non prends mon tableau fait ce que tu dis ça te donnera :

    1 2 3 4

    T[0] = T[3-0];

    ton tableau aura cette tête après :
    4 2 3 4

    T[1] = T[3-1];
    après :
    4 3 3 4

    C'est pas ça .

    Et si tu sais le faire pour un petit tableau; alors ça marchera avec tous hein .

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut, et bienvenue sur le forum.

    Comme on essaye de te le faire remarquer, ce n'est, effectivement, qu'une question d'algorithme.

    Arzar te l'a dit, il faut... échanger les éléments.

    Alors, essaye peut être de réfléchir à "comment échanger" deux éléments.

    Allez, un indice supplémentaire: cela se fait en plusieurs étapes

    Si tu ne trouve toujours pas, tu n'a qu'à faire les essais en "live": place toi devant deux assiettes, et essaye d'en échanger les places... que dois tu faire pour y arriver (en ne touchant jamais qu'une assiette à la fois)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    Merci de vos conseils je vais tester ça et je vous dirait ce que j'ai trouvé!

  9. #9
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    J'avais pensé à prendre 2 boucle et faire:

    for (int j=5; j>0;j--)
    for(int i=0; i<5; i++)
    {A[j]=A[i];}


    Mais ca ne marche pas et je ne comprends puisque j'ai l'impression que cette algorithme est juste non?

  10. #10
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    C'est le même problème que tout à l'heure. Il faut que tu différencie affectation et échange...

  11. #11
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    Oui c'est vrai il y a une nuance mais mon niveau en informatique est plus que faible. ..

    Edit:

    Je viens de trouver , pour un tableau de 4 elements j'ai donc fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 4 ; i >=0  ; i--)
    {
    	cout <<A[i]<<" ";
    Merci pour vos conseil en tout cas!!

  12. #12
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Citation Envoyé par hostyle Voir le message
    Oui c'est vrai il y a une nuance mais mon niveau en informatique est plus que faible. ..

    Edit:

    Je viens de trouver , pour un tableau de 4 elements j'ai donc fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 4 ; i >=0  ; i--)
    {
    	cout <<A[i]<<" ";
    Merci pour vos conseil en tout cas!!
    Non, là tu n'échange rien, tu ne fait qu'afficher dans l'ordre inverse de remplissage. Et si ton tableau contient 4 éléments, le code est faux.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  13. #13
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    Ah ba alors je sais pas

  14. #14
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Tu as deux verres remplis l'un d'eau, l'autre de jus d'orange, et on te demande d'échanger les contenus des verres, comment vas tu faire ?

    Et bine c'est la même chose pour échanger le contenu de deux variables.

    Maintenant, tu as 15 verres devant toi, chacun remplis d'un alcool différent, et tu veux avoir les verres dans le même ordre, mais les contenus dans un sens inverse. Comment t'y prends-tu ? (sachant que tu n'as pas 15 verres vides à ta disposition, mais un seul).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  15. #15
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Par défaut
    Merci, oui j'imagine bien qu'il faut stocker cela dans quelque chose mais je vois pas trop comment m'y prendre.

  16. #16
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    A quand les cours d'algorithmie générale avant de passer aux cours sur les langages particuliers

    Bon, le principe est simple:
    1. tu récupère la valeur du premier élément dans une variable temporaire
    2. tu copie la valeur du dernier élément dans le premier
    3. tu copie la valeur de la variable temporaire dans le dernier élément
    4. tu recommence avec les éléments "suivants"
    5. tu t'arrête lorsque tu as parcouru la moitié du tableau (autrement, tu arrivera à inverser des éléments qui... l'ont déjà été, et ton tableau final sera dans le même ordre que ton tableau de départ)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Faire défiler les elements d'un tableau
    Par Laure888 dans le forum Flash
    Réponses: 2
    Dernier message: 12/10/2005, 16h00
  2. [langage] Compter des éléments dans un tableau
    Par helene22500 dans le forum Langage
    Réponses: 29
    Dernier message: 23/05/2005, 11h38
  3. supprimer un element d'un tableau vector
    Par boby61 dans le forum SL & STL
    Réponses: 22
    Dernier message: 23/03/2005, 20h49
  4. Réponses: 3
    Dernier message: 20/09/2004, 12h23
  5. [langage] supprimer le premier élément d'un tableau
    Par Kinethe dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2004, 15h39

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