Supprimer une case d'un tableau en c

Mr75 -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je suis novice en C et en fusant ma 1ere application sur les tableau je me suis trouver dans un problème :
je veux supprimer un champ d'un tableau en C j'ai écris mon programme mais la solution n'est pas l'idéal :( et j'ai pas trouver la solution :(

voici mon code et j'aimerais bien trouver une solution !!!! aidez moi :(
#include <stdio.h>
#include <conio.h>

int main() {

int t[50], n, v, i, ind ;
v=0;
printf ("taille de tableau");
scanf("%i",&n);

for (i=0;i<n;i++)
{

printf("t[%i]",i);
scanf("%i",&t[i]);
}


printf("donner l'indice à supprimer");
scanf("%i",&ind);

for(i=ind;i<=n;i++)
{
t[i]=t[i+1];
printf("%i##",t[i]);


}
for (i=0;i<n;i++){
printf("%i**",t[i]);
}getch();
return 0;

}
Configuration: Windows XP
Safari 532.0

4 réponses

  1. loupius Messages postés 789 Statut Membre 148
     
    mais la solution n'est pas l'idéal
    Qu'entends-tu par là ?
    for(i=ind;i<=n;i++)
    Ton indice débordera, il faut mettre: 'i<n-1', car tu utiises 't[i+1]'.
    Bonne continuation.
    1
    1. mr75
       
      salut,
      merci pour ta réponse mais le problème est que en mettant 'i<n-1' j'ai une répétition de la valeur du derniére case du tableau et j'ai pas compris pourquoi :(
      0
    2. mr75
       
      bon a vrais dire j'ai trouver une solution mais je sais pas car je crois que c'est la tricherie ^^ car j'ai ajouter après la boucle for en question" n--;" et comme ça le résultat afficher a la fin est correcte et je ne trouve pas la dernière case en double !!!
      es que cette solution est logique ou on peut avoir une solution concrète a mon problème ???
      voici le code après la correction
      #include <stdio.h>
      #include <conio.h>
      
      int main() {
      
      int t[50], n, v, i, ind ;
      v=0;
      printf ("taille de tableau");
      scanf("%i",&n);
      
      for (i=0;i<n;i++)
      {
      printf("t[%i]",i);
      scanf("%i",&t[i]);
      }
      printf("donner l'indice à supprimer");
      scanf("%i",&ind);
      
      for(i=ind;i<n-1 ;i++)
      {
      t[i]=t[i+1];
      
      }
      n--;
      for (i=0;i<n;i++){
      printf("%i**",t[i]);
      }getch();
      return 0;
      
      }
      
      0