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 :

problème avec les tableaux


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut problème avec les tableaux
    Bonjour,

    voila mon problème est que je dois trier un tableau par ordre croissant de la façon suivante:
    la méthode consiste à créer un nouveau tableau avec les indices de l'ordre en commençant par la case qu'indique une variable, voici un exemple:
    le tableau suivant est à trier: 0.5 | 2.5 | 2.3 | -1.1
    en résultat cela doit être: 2 | -1 | 1 | 0
    et la variable de départ doit être à 3.
    Explication:
    La variable de départ contient la valeur 3 ce qui indique que la valeur la plus basse est à l'indice 3 dans le tableau à trier.
    L'élément d'indice 3 dans le tableau de résultat contient la valeur 0 qui indique que le suivant dans l'ordre croissant est à l'indice 0 dans le tableau à trier.
    L'élément d'indice 0 dans le tableau de résultat contient la valeur 2 qui indique que le suivant dans l'ordre croissant est à l'indice 2 dans le tableau à trier.
    L'élément d'indice 2 dans le tableau de résultat contient la valeur 1 qui indique que le suivant dans l'ordre croissant est à l'indice 1 dans le tableau à trier.
    L'élément d'indice 1 dans le tableau de résultat contient la valeur -1 qui indique qu'on a vu tous les éléments du tableau à trier.

    Mon code:
    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
    #include<stdio.h>
     
    int main(void)
    {
    int releve[4]={0.5, 2.5, 2.3, -1.1};
    int tableau_entier[4];
    int variable_entiere=0, i, j, test=0;
     
    tableau_entier[0] = -1;
    for (i=1;i<4;i++)
    {
    if (releve[i] < releve[variable_entiere])
    {
    variable_entiere = i;
    tableau_entier[i] = 0;
    }
    else
    {
    for (j=0;j<4;j++)
    {
    if (releve[j] > releve[i])
    {
    tableau_entier[i] = j;
    tableau_entier[0] = i;
    test = 1;
    }
    }
    if (test <= 0)
    {
    tableau_entier[i] = -1;
    }
    }
    test = 0;
    }
     
    for (i=0;i<4;i++)
    {
    printf("%d |", tableau_entier[i]);
    }
    printf("%d", variable_entiere);
    return 0;
    }
    Alors comme tableau de résultat il m'affiche: -1 | -1 | -1 | 0 mais me donne la bonne valeur pour la variable de départ.
    Je ne comprend pas pourquoi en espérant que vous puissiez m'aider merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 147
    Par défaut
    Salut

    Je n'ai pas trop essayé de comprendre ce que tu avais fait, mais j'ai trouvé une méthode qui marche pour résoudre ton problème. Voilà le code :

    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
    #include<stdio.h>
     
    #define N 4
     
    int main(void)
    {
        double releve[N]={0.5, 2.5, 2.3, -1.1};
        int tableau_entier[N];
        int i, j;
        int i_depart = 0;
        int i_min = 0;
        int i_encours;
     
        for(i=0;i<N;i++)
            tableau_entier[i] = -1;
     
        /* on recherche l'indice de départ */
        for(i=1;i<N;i++)
        {
            if(releve[i] < releve[i_depart])
                i_depart = i;
        }
        i_encours = i_depart;
     
        for(i=1;i<N;i++) /* on fait N-1 tours car on a déjà le départ */
        {
            /* on recherche le nouveau min */
     
            /* on recherche le 1er indice i_min valide */
            i_min = 0;
            while(i_min == i_encours || tableau_entier[i_min] != -1)
                i_min++;
     
            /* on recherche le vrai min */
            for(j=i_min+1;j<N;j++)
            {
                if(releve[j] < releve[i_min] && tableau_entier[j] < 0 && j != i_encours)
                    i_min = j;
            }
     
            /* on met à jour */
            tableau_entier[i_encours] = i_min;
            i_encours = i_min;
        }
     
     
        for (i=0;i<N;i++)
        {
            printf("%d |", tableau_entier[i]);
        }
        printf("\n%d", i_depart);
     
        return 0;
    }
    Si tu ne comprends pas ce que je fais (ce qui serait normal parce que moi même j'ai eu du mal à me relire), hésite pas à demander.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Super je te remercie beaucoup, avec ta solution j'ai vu tout de suite ou était mon erreur, et non c'était tout à fait compréhensible ton code t'inquiète merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les tableaux et les structures
    Par al-khawarrizmi dans le forum Débuter
    Réponses: 2
    Dernier message: 10/06/2008, 16h17
  2. Problème avec les tableaux de char.
    Par Letinono dans le forum Débuter
    Réponses: 3
    Dernier message: 29/05/2008, 16h24
  3. Problème avec les tableaux de pointeurs
    Par TheDoci dans le forum C
    Réponses: 2
    Dernier message: 07/01/2007, 13h04
  4. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54

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