Problemme dans un programme en c
Résolu/Fermé
reggaerai
Messages postés
15
Date d'inscription
mercredi 25 novembre 2009
Statut
Membre
Dernière intervention
12 novembre 2012
-
25 nov. 2009 à 17:21
reggaerai Messages postés 15 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 12 novembre 2012 - 26 nov. 2009 à 00:08
reggaerai Messages postés 15 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 12 novembre 2012 - 26 nov. 2009 à 00:08
A voir également:
- Problemme dans un programme en c
- Programme demarrage windows 10 - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
- Forcer la fermeture d'un programme - Guide
4 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
25 nov. 2009 à 19:58
25 nov. 2009 à 19:58
for(i=taille;i>p;i--)
{
tab[i]=tab[i-1];
tab[p]=val;
}
ton tab[p] = val, tu veux le faire après avoir décalé tous les éléments, non ? De plus il faut le faire une seule fois. Alors pourquoi le mettre dans la boucle ? il faut le mettre juste après la boucle.
Ceci a causé ton bug, car dans la première fois que la boucle se lance, tab[p] est remplacé par val et perd sa valeur. alors quand la boucle veut "décaler le pième élément" pour laisser de la place au nouveau que tu veux mettre, tu as déja mis (plusieurs fois) la nouvelle valeur, donc l'ancienne est en fait complètement perdue.
{
tab[i]=tab[i-1];
tab[p]=val;
}
ton tab[p] = val, tu veux le faire après avoir décalé tous les éléments, non ? De plus il faut le faire une seule fois. Alors pourquoi le mettre dans la boucle ? il faut le mettre juste après la boucle.
Ceci a causé ton bug, car dans la première fois que la boucle se lance, tab[p] est remplacé par val et perd sa valeur. alors quand la boucle veut "décaler le pième élément" pour laisser de la place au nouveau que tu veux mettre, tu as déja mis (plusieurs fois) la nouvelle valeur, donc l'ancienne est en fait complètement perdue.
reggaerai
Messages postés
15
Date d'inscription
mercredi 25 novembre 2009
Statut
Membre
Dernière intervention
12 novembre 2012
25 nov. 2009 à 23:56
25 nov. 2009 à 23:56
@Pacorabanix
merci beaucoup mon ami ca marche bien maintenant mais il y t(a une un petit problème c'est que les position ca commence de 0 par exemple
t[1]=1
t[2]=2
t[3]=3
je donne la position de l'élément à ajouter est 0 la valeur est 12 j'ai ceci
t[1]=12
t[2]=1
t[3]=2
t[4]=3
comment je dois fait pour que les position commence de 1 et non 0 merci encore.
merci beaucoup mon ami ca marche bien maintenant mais il y t(a une un petit problème c'est que les position ca commence de 0 par exemple
t[1]=1
t[2]=2
t[3]=3
je donne la position de l'élément à ajouter est 0 la valeur est 12 j'ai ceci
t[1]=12
t[2]=1
t[3]=2
t[4]=3
comment je dois fait pour que les position commence de 1 et non 0 merci encore.
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
26 nov. 2009 à 00:01
26 nov. 2009 à 00:01
Tu ne peux pas modifier ça, c'est ainsi, en C, C++ ou Java, le premier indice d'un tableau sera toujours 0.
Bien sûr, tu peux être malin et dans ton printf(), au lieu d'afficher i (qui est l'indice courant dans ta boucle for i de 1 à n), tu affiches i+1.
Exemple : si tu fais une boucle for jusqu'à 4, tu vas devoir en réalité faire une boucle de 0 à 3, donc :
for(i = 0 ; i < 3 ; i++)
Et dans ton for, pour afficher de 1 à 4 au lieu de 0 à 3, tu fais simplement :
printf(i+1);
(pour afficher le numéro que tu veux, attention, un printf(i+1) ne va absolument pas te montrer ce qu'il y a dans la case i+1 du tableau, simplement le nombre i+1 !)
Voilà :)
Bien sûr, tu peux être malin et dans ton printf(), au lieu d'afficher i (qui est l'indice courant dans ta boucle for i de 1 à n), tu affiches i+1.
Exemple : si tu fais une boucle for jusqu'à 4, tu vas devoir en réalité faire une boucle de 0 à 3, donc :
for(i = 0 ; i < 3 ; i++)
Et dans ton for, pour afficher de 1 à 4 au lieu de 0 à 3, tu fais simplement :
printf(i+1);
(pour afficher le numéro que tu veux, attention, un printf(i+1) ne va absolument pas te montrer ce qu'il y a dans la case i+1 du tableau, simplement le nombre i+1 !)
Voilà :)
reggaerai
Messages postés
15
Date d'inscription
mercredi 25 novembre 2009
Statut
Membre
Dernière intervention
12 novembre 2012
26 nov. 2009 à 00:08
26 nov. 2009 à 00:08
ok merci beaucoup vraiment vos repense mon vraiment aider encore merci