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

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    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 habitué
    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 : 36
    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
    Points : 165
    Points
    165
    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.
    Avec les ordinateurs, 99% des bugs proviennent de l'interface chaise-clavier...

    Comment ça 1Km n'est pas égal à 1024m ???

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    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