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 :

les tableaux c est mon obstacle


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    débutant
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : débutant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut les tableaux c est mon obstacle
    bonjour à tous,

    comme d'habitude, j'ai un autre obstacle mais cette fois si c'est problème defrant. j'ai vu la leçon des tableaux complètement et j'ai bien compris comment déclarer des des tableaux, etc.

    ok ok on commence.

    voici un exercice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exercice 5 (plus difficile) : créer une fonction ordonnerTableau qui classe les valeurs d'un tableau dans l'ordre croissant. Ainsi, un tableau qui vaut {15, 81, 22, 13} doit à la fin de la fonction valoir {13, 15, 22, 81} !
    Cet exercice est un peu plus difficile que les autres, mais est tout à fait réalisable. Ca va vous occuper un petit moment :p
    et voila la correction :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    #include <stdio.h>
    #include <stdlib.h>
     
    void ordonnerTableau(long tableau[], long tailleTableau);
     
    int main(int argc, char *argv[])
    {
    long tableau[4] = {154, 41, 2, 1445};
    ordonnerTableau(tableau,4);
    return 0;
    }
     
     
    void ordonnerTableau(long tableau[], long tailleTableau)
    {
    long i,j;
    long var=0;
    long boucle = 1;
     
    do
    {
    var=0;
    j=0;
    for (i=0; i<tailleTableau; i++)
    {
    if (i!=0)
    {
        if (tableau[i]<var)
    {
    var=tableau[i-1];
    tableau[i-1]=tableau[i];
    tableau[i]=var;
    j=1;
    }
            else
            {
            var=tableau[i-1];
            }
    }
    else
    {
    if (tableau[i]<var)
    {
    printf ("Pas de valeurs negative");
    return 0;
    }
     
            else
            {
            var=tableau[i];
            }
    }
    }
    if(j==0)
    {
    boucle=0;
    }
    }
     while (boucle==1);
     
    for (i=0; i<tailleTableau;i++)
    {
    printf ("%ld\n",tableau[i]);
    }
    }
    maintenant, mon problème est :

    j'ai pas trouver ce qu'il faut faire pour classer les valeur des plus petites au plus grandes.

    pourriez-vous me donner la façon pour bien faire marcher le programme ?? (j'ai rien compris dans ce code source)

    ou bien pourriez-vous m'expliquer ce code source ??

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour,

    Lorsque tu déclares un tableau, tu déclares en fait n variables consécutives, auxquelles tu accèdes via leur numéro.

    Par conséquent, avoir cinq variables tableau[0], tableau[1], tableau[2], tableau[3], tableau[4], c'est comme avoir cinq variables a, b, c, d et e. L'intérêt est que tu es sûre qu'elles sont consécutives en mémoire, et que tu peux éventuellement les indexer à l'aide d'une autre variable. Par exemple : tableau [i].

    Si tu veux trier un tableau, il faut comparer les valeurs entre elles et vérifier si la première est inférieure, égale ou supérieur à la suivante. Cela se fait avec les opérateurs « < », « = » et « > » comme tu le ferais sur papier en mathématiques.

    Si tu te rends compte que la première valeur est supérieure à la suivante, alors il faut les permuter. Pour cela, tu copies la première dans une variable temporaire, tu copies la seconde dans la première, et tu copies la variable temporaire dans la seconde, tout simplement.

    Fais une recherche avec « algorithme de tri » sur le moteur de recherche de ton choix pour voir quelles sont les techniques les plus efficaces en fonction des situations.

  3. #3
    Membre averti
    Homme Profil pro
    débutant
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : débutant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut
    merci bien mon aimi mais j ai pasi compris comment declare une variable tomporair

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Une variable temporaire est une variable ordinaire.
    Tu la définis comme un tableau, sans les crochets.

  5. #5
    Membre averti
    Homme Profil pro
    débutant
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : débutant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut
    Pourez Vous me fair un example de la declarations des varible tomporaire


  6. #6
    Membre actif
    Avatar de Canan
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut
    C'est juste une variable que tu va utiliser pour garder en mémoire un de tes nombres, d'où son nom de "temporaire".

    Par exemple : Le "long var = 0;" que tu utilises dans ton "for".

  7. #7
    Membre actif
    Avatar de Canan
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut
    Explication du principe
    - Une simple boucle qui parcourt toutes les cases de ton tableau reçu en paramètre, à l'intérieur tu refais une boucle qui tournera tant que le nombre (en commençant de l'avant dernière case de ton tableau) est supérieur ou égal a la case traite de la boucle principale, ce qui te permettra a l'intérieur de celle ci de vérifier le nombre avec la case d'avant, tout en conservant le nombre d'avant dans une variable temporaire.

    Précision
    - Mon explication est compliquer à comprendre, car difficile d'expliquer un algorithme en essayant de se baser sur du code déjà fait.
    Donc pour précision, quand je dis "ce qui te permettra a l'intérieur de celle ci de vérifier le nombre avec la case d'avant, tout en conservant le nombre d'avant dans une variable temporaire", ca correspond au passage suivant de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var = tableau[i - 1];
    tableau[i - 1] = tableau[i];
    tableau[i] = var;
    Avec pour variable temporaire "var".

    J'espere que tout ceci pourra t'aider à mieux comprendre ton soucis et surtout à le corriger.
    De toute façon, florianjoy54 ta mis un lien vers un tutoriel détaillé également.


    EDIT : Le post de florianjoy54 précédent celui ci ayant disparu, je ne sais pas si je dois ou non laissé le mien.

  8. #8
    Membre confirmé Avatar de florianjoy54
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 155
    Par défaut
    c'est peut être un peu tard mais voici une illustration de l'explication de Canan :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    void            display_tab(int *tab, int size)
    {
      int           i;
    
      i = 0;
      for (i = 0; i < size; ++i)
        {
          printf("%d\n", tab[i]);
        }
    }
    
    int             *sort_tab(int *tab, int size)
    {
      int           i;
      int           tmp;
      int           tab_en_ordre;
    
      i = 0;
      tmp = 0;
      tab_en_ordre = 0;
    
    //tant que notre tableau n'est pas trié on parcourt notre tableau.
      while (tab_en_ordre != 1)
        {
          tab_en_ordre = 1;
          for (i = 0; i < size; ++i)
            {
              if (tab[i] > tab[i + 1])
                {
    // je sauvegarde ma valeur à l'indice i dans la variable temporaire nommée tmp
                  tmp = tab[i];
                  tab[i] = tab[i + 1];
                  tab[i + 1] = tmp;
                  tab_en_ordre = 0;
                }
            }
        }
      return (tab);
    }
    
    int             main()
    {
      int           tab[] = {90, 54, 2, 42};
      int           *new;
    
    // on renvoi le tableau trié
      new = sort_tab(tab, 4);
    // et on l'affiche
      display_tab(new, 4);
      return (0);
    }

  9. #9
    Membre actif
    Homme Profil pro
    etudiant ingénieur
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : etudiant ingénieur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut rep
    salut
    trier un tableau et un des algorthmes qu'un devlopeur doit realiser
    pour le realiser plusieur methodes ce pose ,une de ses methode c'est le tris par la methode BULL
    Le tri à bulles ou tri par propagation est un algorithme de tri qui consiste à faire remonter progressivement les plus grands éléments d'un tableau, comme les bulles d'air remontent à la surface d'un liquide.
    source de la definition:
    http://www.developpez.net/forums/ima.../icon_cool.gif http://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles


    son algorthme et le suivant:
    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
    void tribulle(int T[], in N)
    {
    int i,j,temp;
     
    for(i=N-1; i>0 ; i--)
    for(j=1;j<=i;j++)
    {
    if(T[j-1]>T[j])
    {
    temp=T[j-1];
    T[j-1]=T[j];
    T[j]=temp;
    }
    }
    }
    exemple:
    Prenons la liste de chiffres « 5 1 4 2 8 » et trions-la de manière croissante en utilisant l'algorithme de tri à bulles. Pour chaque étape, les éléments comparés sont écrits en gras.

    Première étape:
    ( 5 1 4 2 8 ) \to ( 1 5 4 2 8 ) Les éléments 5 et 1 sont comparés, et comme 5 > 1, l'algorithme les intervertit.
    ( 1 5 4 2 8 ) \to ( 1 4 5 2 8 ) Interversion car 5 > 4.
    ( 1 4 5 2 8 ) \to ( 1 4 2 5 8 ) Interversion car 5 > 2.
    ( 1 4 2 5 8 ) \to ( 1 4 2 5 8 ) Comme 5 < 8, les éléments ne sont pas échangés.
    Deuxième étape:
    ( 1 4 2 5 8 ) \to ( 1 4 2 5 8 ) Même principe qu'à l'étape 1.
    ( 1 4 2 5 8 ) \to ( 1 2 4 5 8 )
    ( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
    ( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
    À ce stade, la liste est triée, mais pour le détecter, l'algorithme doit effectuer un dernier parcours.
    Troisième étape:
    ( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
    ( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
    ( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
    ( 1 2 4 5 8 ) \to ( 1 2 4 5 8 )
    Comme la liste est triée, aucune interversion n'a lieu à cette étape, ce qui provoque l'arrêt de l'algorithme.
    source de l exemple

    http://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 834
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par youssef_the_king Voir le message
    par la methode BULL
    "bulle" (nom commun) et non "Bull" (la société) !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2009, 22h47
  2. Quel est le meilleur SGBD pour gérer les tableaux ?
    Par Gui13 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 18/07/2007, 14h40
  3. Réponses: 2
    Dernier message: 12/03/2007, 16h05
  4. Réponses: 8
    Dernier message: 17/05/2006, 10h51
  5. [W3C] Les tableaux c'est si mauvais que ca ?
    Par ShinJava dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 03/03/2006, 13h17

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