Bonjour,
j'ai un vecteur exemple 1 2 3 4 5 et je le transformer en 5 1 2 3 4
ç'est à dire faire un décalage vers la droite(rotation)
Bonjour,
j'ai un vecteur exemple 1 2 3 4 5 et je le transformer en 5 1 2 3 4
ç'est à dire faire un décalage vers la droite(rotation)
Bonjour
Je crois que personne ne la comprend non plus. Typiquement, tu as écrit "mettre dans la case [i+1] la valeur qu'il y a dans la case[i+1]" ce qui est totalement absurde.
Accessoirement ça m'étonne que ça fonctionne (ou alors ça va pas durer). Voici les erreurs qui m'ont sauté aux yeux:
- on ne flushe pas stdin (le comportement n'est pas garanti)
- les cases d'un tableau vont de 0 à "n-1" or toi tu manipules les cases de 1 à n.
Ps: pour ton code,![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bonjour,
Je voudrais savoir si ce code pour le décalage à droite (rotation) est bon ou pas
Merci de me dire quoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 #include <stdio.h> #include <stdlib.h> int main() { int va[50];// vecteur int i = 0;//compteur int nbel = 0;//nombre de cases du vecteur int temp = 0;//valeur temporaire pour stocker les nombres printf("Entrez le nombre de cases utilisees : "); fflush(stdin); scanf("%d", &nbel); for( i = 0; i < nbel; i++) { printf("\nEntrez la valeur de la case %d : \t", i); fflush(stdin); scanf("%d", &va[i]); } for( i = 0; i < nbel; i++) { printf("%d\t",va[i]); } printf("\n"); //decalage vers la gauche /*temp = va[0]; for( i = 0; i < nbel ;i++) { va[i] = va[i + 1]; } va[nbel-1] = temp; for( i = 0; i < nbel;i++) { printf("%d\t", va[i]); } */ //decalage vers la droite temp = va[nbel-1]; for( i = nbel - 1; i > 0; i--) { va[ i ] = va[ i - 1 ]; } va[0] = temp; for( i = 0; i < nbel ; i++) { printf("%d\t", va[i]); } return 0; }
Punaise, 4 posts pour dire la même chose, avec en plus une écriture en majuscules (synonyme de hurlements) et du "urgent" de partout ? T'as jamais été voir la netiquette ? Ou au minimum les règles du forum ???
Donc
- tu as un bouton "modifier" qui te permet de modifier les posts (et même les supprimer ce qui sera d'ailleurs un excellente idée)
- use your brain => i <= (n-1) équivaut à i < n...
- et euh pour ton décalage (ou plutôt rotation) à droite je ne comprends même pas que tu n'y arrives pas vu que tu as réussi la rotation à gauche. Mathématiquement il n'y a aucune différence entre "gauche" et "droite" sauf que d'un coté c'est "-" et que de l'autre c'est "+". Donc tu prends un papier, tu écris ton tableau et tu pointes chaque case de ton tableau en te demandant "vu que j'ai réussi à la décaler à gauche pourquoi je n'arrive pas à la décaler à droite"...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
j'ai fait les modifications et je voudrais savoir si le code est mieux
Ben il fonctionne donc si ça te suffit...
Maintenant si tu veux faire plus "pros" (ou simplement faire moins "j'en fais dans tous les sens sans réfléchir") alors
- tu dédies l'affichage à une fonction ce qui te permettra de l'appeler quand tu veux sans avoir à retaper son code
- eventuellement tu mets aussi le décalage dans une fonction en lui rajoutant la possibilité de décaler de "n" (et non plus de "1")
Et si c'est ton prof qui t'a conseillé les fflush(stdin) alors tu peux les laisser (pour les exos ça va) mais te faudra garder à l'esprit que si tu veux continuer plus profondément dans le C alors tôt ou tard il te faudra abandonner cette instruction (et mieux vaut tôt que tard) car elle t'amènera plus d'ennuis que de solutions et te faudra alors apprendre à gérer ton clavier (ce qui n'est d'ailleurs pas super compliqué en réalité).
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bonjour.
J'ai envie de dire, pourquoi tu te prends la tête comme ça ?
Le vecteur n'est pas le meilleur conteneur pour faire ce genre de manipulation, puisque toutes les données sont stockées côte à côte dans la mémoire, et les décaler aura un coût.
Un conteneur comme std::dequeue sera plus adapté, puisqu'il suffit de prendre le dernier élément std::dequeue::back(), le supprimer std::dequeue::pop_back(), puis l'ajouter au début std::dequeue::push_front().
Je pensais qu'il s’agissait de C++, j'ai été trompé par le terme vecteur, mes excuses.
Partager