Décalage dans un tableau
Résolu/Fermé
A voir également:
- Algorithme décalage tableau
- Décaler un tableau vers la droite en c - Meilleures réponses
- Decalage d'un tableau en c - Meilleures réponses
- Décalage dans un tableau ✓ - Forum - C
- Decalage dans un tableau - Forum - C
- Algorithme permutation tableau - Forum - C
- Algorithme remplissage tableau - Forum - Programmation
- Algorithme de permutation de deux variables - Forum - Programmation
5 réponses
le probleme c est que je doit afficher le message apres et permettre d afficher les messages precedent et suivant
fiddy
24 avril 2014 à 14:49
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
24 avril 2014 à 14:49
Ben, tu les auras tes messages précédents :
A droite de la case : les anciennes valeurs.
A gauche, les nouvelles valeurs.
En revanche, avec le décalage tu perds tout.
Ou alors dis-nous ce que tu entends par décalage.
Par exemple, tu as : 1 2 3 4 5 6 7 8 9 10
Après avoir mis le 11, tu voudrais que le tableau soit écrit comment ?
A droite de la case : les anciennes valeurs.
A gauche, les nouvelles valeurs.
En revanche, avec le décalage tu perds tout.
Ou alors dis-nous ce que tu entends par décalage.
Par exemple, tu as : 1 2 3 4 5 6 7 8 9 10
Après avoir mis le 11, tu voudrais que le tableau soit écrit comment ?
fiddy
24 avril 2014 à 14:02
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
24 avril 2014 à 14:02
Bonjour,
Il y a beaucoup plus simple et performant que faire un décalage à gauche de toutes les valeurs.
Il suffit d'utiliser le modulo. Tu stockes le ième élément à la case (i-1)%10.
Par exemple, le premier, tu le stockes dans la case (1-1)%10 => 0.
...
Le 11ème, tu le stockes dans la case (11-1)%10 => 0
Etc.
Cdlt,
-
Google is your friend
Il y a beaucoup plus simple et performant que faire un décalage à gauche de toutes les valeurs.
Il suffit d'utiliser le modulo. Tu stockes le ième élément à la case (i-1)%10.
Par exemple, le premier, tu le stockes dans la case (1-1)%10 => 0.
...
Le 11ème, tu le stockes dans la case (11-1)%10 => 0
Etc.
Cdlt,
-
Google is your friend
2 3 4 5 6 7 8 9 10 11
J avait pensé cree un autre tableau et copier les tableau entre eux mais c'est laborieux ... doit y avoir plus simple
J avait pensé cree un autre tableau et copier les tableau entre eux mais c'est laborieux ... doit y avoir plus simple
fiddy
Modifié par fiddy le 24/04/2014 à 16:17
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
Modifié par fiddy le 24/04/2014 à 16:17
Ah ok. Je n'étais pas parti sur ce décalage :-).
Effectivement, il y a plus simple.
Il suffit d'une variable tmp.
L'algorithme peut être :
Cdlt,
Effectivement, il y a plus simple.
Il suffit d'une variable tmp.
L'algorithme peut être :
Pour i de 1 à 10 Faire
tmp[i-1]<-tmp[i]
FinPour
tmp[9] <- NouvelleValeur
Cdlt,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
memmove ( &tmp[0], &tmp[1] , 9*sizeof(tmp[0]));fait le décalage en une seule instruction.
fiddy
Modifié par fiddy le 24/04/2014 à 17:32
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
Modifié par fiddy le 24/04/2014 à 17:32
Bien vu :-).
D'ailleurs, ce n'est pas tmp, mais tab que je voulais mettre. La variable tmp n'étant pas nécessaire.
D'ailleurs, ce n'est pas tmp, mais tab que je voulais mettre. La variable tmp n'étant pas nécessaire.
memmove ( tab, tab+1 , 9*sizeof *tab);
fiddy
24 avril 2014 à 22:07
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
24 avril 2014 à 22:07
Rassure-toi le père. tab ou &tab[0], c'est la même chose. Juste que tab fait plus C ;-).
Pour le 9*sizeof *tab, la syntaxe est effectivement importante pour ne pas nuire à la lisibilité. 9 * sizeof * tab; c'est tout de suite moins joli :-).
Pour le 9*sizeof *tab, la syntaxe est effectivement importante pour ne pas nuire à la lisibilité. 9 * sizeof * tab; c'est tout de suite moins joli :-).