Probleme programme c

nass956 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
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

#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)
}

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    En ligne 21, tu écris
    T[N]=0;
    et comme
    N
    est un littéral définit par ton define à 10 :

    - tu écris à l'index T[10] qui déborde la mémoire allouée, les 10 index permis pour T allant de 0 à 9
    - tu écris toujours au même endroit dans ta boucle, alors que tu devrais écrire à un endroit différent selon le nombre de 0 que tu 'déplaces"

    Est-ce plus clair ?

    Dal
    0
    1. nass956 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      super merci jpourrait te demander de l aide pour un autre algo ?
      0
    2. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      pose tes questions sur le forum (dans un fil séparé), il y aura bien quelqu'un qui t'aidera si ce n'est pas moi :-)
      0