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 :

Probleme d affichage de tableau en C


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Probleme d affichage de tableau en C
    bonsoir j ai un problème avec un algorithme que je veux traduire en langage c
    Dans l algorithme j ai un tableau de 10 valeur avec deux chiffres 0 placés n importe ou dans le tableau et je dois les placés à la fin
    voici le programme c que j ai essaye de faire mais qui a la place de me mettre des 0 me met des 2 a la fin


    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
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    int main()
    {
       int i,j;
       int cpt;
       int T[N] = {1,-3,4,0,5,-2,-6,1,0,2} ;
       cpt = 0;
     
       for(i=0;i<N-1-cpt;i++)
       {
           if(T[i]==0)
           {
               for(j=i;j<N-1-cpt;j++)
               {
                   T[j]=T[j+1];
               }
           cpt = cpt+1;
           i=i-1;
           T[N]=0;
     
           }
       }
    /*affichage*/
    for(i=0;i<N;i++)
    {
        printf("%d",T[i]);
    }
    return(EXIT_SUCCESS)
    }

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Je ne sais pas à quoi sert la 2ème boucle ?

    là je procède ainsi si c'est un 0 rencontré j'intervertis la valeur en cpt avec la valeur en i
    SAUF si la valeur stockée en cpt est déjà 0 dans ce cas je décrémente de 1 la valeur de cpt tout simplement et je recommence
    et je fais ça jusqu'à N - 1 - cpt effectivement ...

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    int main()
    {
       int i,j;
       int cpt;
       int T[N] = {1,-3,4,0,5,-2,-6,1,0,2} ;
       cpt = 0;
     
       for(i=0;i<N-1-cpt;i++)
       {
           if (T[i]==0) 
           {
           cpt = cpt+1;
           if (T[10-cpt] !=0) 
                {
                T[i]= T[10-cpt];
                T[10-cpt] = 0;
                }
            else 
                {
                i = i -1;
                }
           }
       }
    /*affichage*/
    for(i=0;i<N;i++)
    {
        printf("%d",T[i]);
    }
     
    }
    A tester / voir et à adapter si besoin ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par vttman Voir le message
    Je ne sais pas à quoi sert la 2ème boucle ?

    là je procède ainsi si c'est un 0 rencontré j'intervertis la valeur en cpt avec la valeur en i
    SAUF si la valeur stockée en cpt est déjà 0 dans ce cas je décrémente de 1 la valeur de cpt tout simplement et je recommence
    et je fais ça jusqu'à N - 1 - cpt effectivement ...

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    int main()
    {
       int i,j;
       int cpt;
       int T[N] = {1,-3,4,0,5,-2,-6,1,0,2} ;
       cpt = 0;
     
       for(i=0;i<N-1-cpt;i++)
       {
           if (T[i]==0) 
           {
           cpt = cpt+1;
           if (T[10-cpt] !=0) 
                {
                T[i]= T[10-cpt];
                T[10-cpt] = 0;
                }
            else 
                {
                i = i -1;
                }
           }
       }
    /*affichage*/
    for(i=0;i<N;i++)
    {
        printf("%d",T[i]);
    }
     
    }
    A tester / voir et à adapter si besoin ...

    enfaite ce que j ai oublié de preciser c est qu il faut garder les nombres dans le premier ordre

  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
    Ce n'est pas l'algorithme optimal en effet, mais le programme de l'OP fonctionne très bien.. à une ligne près : la ligne 21 est à modifier et/ou déplacer.

    Serait-il possible d'imaginer un titre de topic plus précis ? Nous sommes sur un forum d'entraide. De programmation. En langage C. On se doute bien qu'il s'agit d'un problème au sein d'un programme C !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Ce n'est pas l'algorithme optimal en effet, mais le programme de l'OP fonctionne très bien.. à une ligne près : la ligne 21 est à modifier et/ou déplacer.

    Serait-il possible d'imaginer un titre de topic plus précis ? Nous sommes sur un forum d'entraide. De programmation. En langage C. On se doute bien qu'il s'agit d'un problème au sein d'un programme C !
    oui c est vrai mais je cherche a garder enfaite l algorithme dans l ordre du debut

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Ce n'est pas l'algorithme optimal en effet, mais le programme de l'OP fonctionne très bien.. à une ligne près : la ligne 21 est à modifier et/ou déplacer.

    Serait-il possible d'imaginer un titre de topic plus précis ? Nous sommes sur un forum d'entraide. De programmation. En langage C. On se doute bien qu'il s'agit d'un problème au sein d'un programme C !
    Enfaite a la ligne 21 je ne vois pas ce qui peut etre modifie
    je pense peut etre qu il faut rajouter T[i]=T[i+1] mais ca ne marche pas

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Ce n'est pas l'algorithme optimal en effet, mais le programme de l'OP fonctionne très bien.. à une ligne près : la ligne 21 est à modifier et/ou déplacer.

    Serait-il possible d'imaginer un titre de topic plus précis ? Nous sommes sur un forum d'entraide. De programmation. En langage C. On se doute bien qu'il s'agit d'un problème au sein d'un programme C !
    j ai essayer de faire ca et ca marche
    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
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    int main()
    {
       int i,j;
       int cpt;
       int T[N] = {1,0,4,0,5,-2,-6,1,0,2} ;
       cpt = 0;
     
       for(i=0;i<N-1-cpt;i++)
       {
           if(T[i]==0)
           {
               for(j=i;j<N-1;j++)
               {
                   T[j]=T[j+1];
               }
           cpt = cpt+1;
           i=i-1;
           T[N-1]=0;
     
           }
       }
    /*affichage*/
    for(i=0;i<N;i++)
    {
        printf("%d",T[i]);
    }
    return(EXIT_SUCCESS);
    }

  8. #8
    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
    C'est bien.

    Tu aurais également pu remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           cpt = cpt+1;
           i=i-1;
           T[N]=0;
    ...par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           T[N - 1 - cpt]=0;
           cpt = cpt+1;
           i=i-1;
    ...dans ton programme original.


    Tu peux maintenant tenter d'améliorer ton algorithme. Il est possible de réaliser l'opération en une seule passe sur le tableau.

Discussions similaires

  1. Probleme programme d'une Liaison RS232 Série en C
    Par dawud dans le forum Réseau
    Réponses: 4
    Dernier message: 02/03/2009, 22h08
  2. Probleme programme java
    Par G4uthier dans le forum Applets
    Réponses: 4
    Dernier message: 13/01/2008, 08h50
  3. probleme programme C
    Par space_56 dans le forum C
    Réponses: 24
    Dernier message: 14/11/2007, 00h08
  4. probleme programme structuré.
    Par argon dans le forum C
    Réponses: 10
    Dernier message: 31/01/2007, 10h11
  5. Slider problème programmation
    Par Bizarroide63 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 27/07/2006, 03h43

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