Probleme programme c

Fermé
nass956 Messages postés 36 Date d'inscription jeudi 14 septembre 2017 Statut Membre Dernière intervention 18 novembre 2018 - Modifié le 15 nov. 2017 à 19:57
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 18 nov. 2017 à 18:46
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

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 15 nov. 2017 à 22:25
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
nass956 Messages postés 36 Date d'inscription jeudi 14 septembre 2017 Statut Membre Dernière intervention 18 novembre 2018
15 nov. 2017 à 23:13
super merci jpourrait te demander de l aide pour un autre algo ?
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 18 nov. 2017 à 18:46
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