Supprimer une case d'un tableau en c

Fermé
Mr75 - 14 déc. 2009 à 01:12
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 déc. 2009 à 06:23
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;

}

4 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
14 déc. 2009 à 01:56
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
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
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