decaler 5 et 6 a gauche menera a supprimer 4 et la case de 4 sera celle de 5 et celle de 5 c'est 6 et celle de 6 sera vide ou sera t-il supprimé elle aussi?
Version imprimable
on est là pour s'aider ;)
bon on va dérouler ça de manière à ce que tu comprenne:
dans un vecteur tu as la suite 3 4 5 6 chaque entier dans une case
insérer le 1 entre le 4 et le 5
lire (nombre); { le 1 }
lire (position); {position 3 }
i := position; {i := 3}
Tant que (i <= nbElement) faire {tant que i <= 4 puisque tu as 4 valeurs}
t[i + 1] := t[i]; { t[4] := t[3] }
i := i + 1; {incrémenter i, i=4}
Fin Tant que
t[position] := nombre; { t[3] := 1}
nbElement := nbElement + 1; {là je ne sais pas pourquoi il a fait ça :mrgreen:}
on fait appel à Sidahmed pour une petite explication, on faisant t[i + 1] := t[i] on écrase pas les valeurs? :?
Bonjour,
On a bien inséré un nouvel élément, donc nbElement augmente de un ;)
Ici, oui tu as raison et j'ai même mentionné que j'ai pas testé les deux codes !Citation:
on fait appel à Sidahmed pour une petite explication, on faisant t[i + 1] := t[i] on écrase pas les valeurs? :?
En fait, j'avais écrit la première version de l'algorithme comme ça :
Franchement, j'arrive pas à suivre la discussion, désolé je suis vraiment harassé ! À demain si Dieu le veut ;)Code:
1
2
3
4
5
6 i := nbElement; Tant que (...) faire t[i + 1] := t[i]; i := i - 1; Fin Tant que
Bonne nuit !
je propose une autre idée, on fait toujours le décalage à droite, mais on commence par le dernier élément.
oui, c'est utile si on veut refaire l'insertion pour d'autres éléments.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 lire (n); lire (nombre); lire (position); i := n; Tant que (i > position) faire T[i+1] := T[i]; i := i-1; Fin tant que t[position] := nombre;
Bonne nuit ;)
Bonjour,
voilà pour l'insertion :
Cordialement,Code:
1
2
3
4
5
6
7
8
9
10 lire(nombre); lire(position); i := nbElement; Tant que (i >= position) faire t[i + 1] := t[i]; i := i - 1; Fin Tant que t[position] := nombre; nbElement := nbElement + 1;
Sidahmed.
Au fait, c'est mon idée que je n'ai pas complétée faute de la fatigue ;)
bon;sur mon exemple 3 4 5 6 et insertion de 1 entre 4 et 5 on aura 65143 donc la position de 5 et 6 n'a pas changé et la position de 3 et 4 a augmenter donc c'est plutot t[i]=t[i+1]:roll:
bref sur mon exemple comment ca s'interprete t[i+1]=t[i].?
et merci a toi et acacia pour m'aider à comprendre
j'ai une autre chose que j'aimerais bien que vous me le faire comprendre;
en fait dans un algo;on me demande de trier par selection(c'est quoi ça par selection?:cry:)n elements de tableau?mais je sais pas comment commencer!et cette methode de selection je veux la comprendre;
merci!!!!;)
Je pense qu'au vu de toutes tes questions, il serait plus facile pour toi de trouver un cours, qui t'expliquera toutes tes réponses.
http://algo.developpez.com/cours/
Et plus particulièrement ceci :
http://lapoire.developpez.com/algorithmique/initiation/
PRomu@ld a raison, essaye de voir ou revoir quelque cours d'algorithmique.
le t[i+1]=t[i] sert pour le décalage.
pourquoi le décalage? puisque tu vas insérer une autre valeur dans ton tableau, (on suppose que le tableau est de taille suffisante) cette valeur sera mise dans une case supplémentaire du tableau, et en plus de l'insertion, tu as indiqué une position entre les cases déjà pleine du tableau, pour ne pas perdre ou écraser les anciennes valeurs, on fait un décalage.
tu avais:
| 3 | 4 | 5 | 6 |
après un décalage à droite (et on commence par décaler le 6 pour ne pas écraser les valeur et faire de la place pour le 1)
| 3 | 4 | . | 5 | 6 |
le processus du décalage se fait comme suit:
(en rouge c'est la case supplémentaire)
| 3 | 4 | 5 | 6 | . |
3 | 4 | 5 | . | 6 |
3 | 4 | .| 5 | 6 |
et maintenant, on a i initialisé à n (nbElement) i=4
t[i+1] = t [5] et c'est la case supplémentaire (en rouge)
t[5] = 6
et puisque c'est en boucle:
t[4] = 5
on arrive à la position, et on insère le 1
@ sidahmed: je pense que ce que tu as repris en bleu sur mon algorithme n'était pas "vraiment" faux!
merci!!
en fait j'ai lu et relu et relu les cours d'algorithmique.
je sais que mes questions vous semblent d'une personne qui n'a meme pas lu son cours.
moi je trouve des difficultés en exercices surtout,parce que
j'arrive pas à interpreter tout mot de l'algorithme!
c'est pourquoi d'ailleur je suis dans ce forum pour que vous m'aidiez à comprendre!
merci;)
Dans un cours que j'ai lu, en arrivant aux exercices je me bloque!:cry: je sais an fait quoi faire.?
nous sommes arrivés dans la classe aux tableaux d'une seule dimension!
et comme vous le verrez j'ai lu mais j'ai pas trouver ce mot tri par selection!
j'ai voulu resoudre mon exercice qui traite la classification de mes elements de tableau par le tri par selection mais.......
:koi: http://algo.developpez.com/cours/
<extrait>
et demain, cours de C... :calim2:Citation:
Je le re-re-répète, si l’on est dans un langage où les indices commencent à zéro, il faut en tenir compte à la déclaration :
Tableau Note(13) en Numérique
...créera un tableau de 14 éléments, le plus petit indice étant 0 et le plus grand 13.
</extrait>
:D oui merci.en fait j'ai pas cherché dans les chapitres qui suivent les tableaux puisque nous sommes arrivés dans les tableaux:oops::oops::oops:pardon
s-ehtp as-tu suivi ce que je t'ai expliqué ou dois-je comprendre que je me suis tuée pour rien ?:aie:
merciii cherie acacia j'ai compris;):D
bon je suis entrain de faire un algo pour stockage d'une serie de nombre dans un tableau de taille maximale 100.ll'operation se termine lorsqu'on tape 0.et on nous demande d'afficher le tableau.
mon essai est le voila:
algorithme:tableau
debut
variables:N tableau de Tmax=100
i:entier
i=1
repeter
ecrire("entrer un nombre")
lire(N(i))
i=i+1
jusqu'à N(i)=0 ou i superieur à 100
fin
bon ce que je voulais c'est de me corrigez
merci!!;)
mais non, mais non... :aie:
J'ai parcouru le cours en diagonal, ca fait peur quand meme:
La vache... Faudra que j'essaye ca dans mon prochain code:Citation:
Voilà la raison qui nous oblige à passer par une variable booléenne , un « drapeau » qui peut se lever, mais jamais se rabaisser. Et cette technique de flag (que nous pourrions élégamment surnommer « gestion asymétrique de variable booléenne ») doit être mise en œuvre chaque fois que l’on se trouve devant pareille situation.
La classe... 8-)Code:
1
2
3
4
5 class AsymetricBooleanVariableManagement { private boolean flag=false; public void set() {flag=true;} public boolean isSet() { return flag; } }
re,
le numéro que fait entrer l'utilisateur est seulement à lire, non à travers le tableau, puisqu'il n'y est pas, ce que tu comptes faire avec ton algo est un stockage, donc le tableau est initialement vide.
réfléchis encore ;)
Bonsoir pseudocode,
c'est de quel cours cet extrait? :roll:
Je vais peut-être passer pour un idiot, mais pour moi il n'y a aucune différence, c'est juste une question de convention de notation.Citation:
en plus ce n'est pas N(i) mais N[i]
s-ehtp a tout à fait raison, lire(x) permet de récupérer une valeur lue sur le clavier (ou tout autre périphérique d'entrée, le contexte ou une précision permet de décider) et de l'affecter à x, lire(N[i]) permet donc de lire un entier et de l'affecter à la i-ème case du tableau, je ne vois pas où est le problème. :koi:Citation:
la valeur entré par l'utilisateur n'est pas dans le tableau alors pourquoi lire N[i]?
oui justement, et s'il y a des conventions, c'est pour les respecter, ça permet une meilleur lisibilité de la chose.;)
oui, tu as raison.
il faut juste lui expliquer cette astuce, au cas ou elle ne l'aurait pas fait exprès.
et merci pour la remarque ;)
"entier" et "caractère" sont deux types différents.
Pas nécessairement, du moment que l'on sait de quoi on parle, ici n est un tableau, qu'on utilise N(i) ou N[i] ça revient strictement au même.Citation:
ça permet une meilleur lisibilité de la chose.
En fait, là non plus, pas nécessairement, du moment que le nombre de caractère est limité, c'est très généralement représenté par un entier, c'est le cas en C et c'est ce qui en ada te permet d'indexer un tableau par des caractères.Citation:
"entier" et "caractère" sont deux types différents.
La différence entre les deux, c'est l'interprétation que l'on en fait pour l'affichage, sinon, généralement on peut appliquer les mêmes opérations sur les deux types. (ie: si tu fais 'a' + 1 tu devrais obtenir le prochain caractère dans l'interprétation, qui n'est pas forcément 'b').
Vous allez dire que je suis méchant (:evilred:) , mais ou est le probleme d'algorithmie la dedans ?Citation:
Envoyé par s-ehtp
Ca ne serait pas plutot un probleme d'initiation a la programmation impérative ? :roll:
oui, tant que ce n'est pas encore du codage, sinon on pourrait se demander pourquoi ce sont des ";" et non des "," qu'il faut mettre à la fin d'instructions.
oui, c'est le code ascii du caractère en question qui est stocké, mais le type char est pour le traitement des caractères, on peut appliquer les mêmes opérations sur les deux types en C ou en C++ ou autres langages, seulement le résultat ne sera pas forcément celui qu'on attendait.
dans l'algorithme, s-ehtp déclare c comme caractère, sont tableau va contenir une suite de lettre ou autres caractères.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 debut variables:N tableau de Tmax=100 i:entier c:caractere i=1 repeter ecrire("entrer un nombre") lire(N(i)) i=i+1 ecrire ("voulez vous continuez) jusqu'à N(i)=0 ou i superieur à 100 ou c='n' ou c='N' fin
après elle demande qu'on lui écrive un nombre!
c'est comme si elle demandait à l'utilisateur de saisir le code ASCII du caractère qu'il voudra insérer dans le tableau :roll:
bon moi ce que j'ai fait c'est comme une sorte d'un controle de saisie ,l'utilisateur ne doit pas depasser le nombre d'elements maximale du tableau,et il peut arreter sa saisie tout en tapant N ou n c'est à dire non ou NON, vous voyez? mais bon c'est a vous tous de voir notre algorithmiciens:D;)
bon j'ai un autre algo qui demande d'inverser les elements du tableau(c'est à dire le dernier prendra la place du premier,l'avant dernier celui du 2eme et ainsi de suite) les elements du tableau sont de nombre de n connu.
voila donc mon modeste essai:D
code:
algorithme:inversement
debut
variables:N tableau de n éléments
i,n,k':entiers
c:réel
si n=2*k' alors pour i allant de 1 à n faire
c=N(i)
N(i)=N(n-(i-1))
N(n-(i-1))=c
finpour
finsi
si n=2*k'+1 alors i=1
repeter c=N(i)
N(i)=N(n-(i-1))
N(n-(i-1))=c
i=i+1
jusqu'à i=(n+1)/2
finsi
fin
NB:@acacia: j'ai voulu ecrire les crochets mais je les ai pas dans mon pc
@ tous ceux qui vont me corriger: j'ai faits de cas la ou il ya le nombre d'elements et pair et la ou le nombre d'elements est impair (dans ce cas l'élément au milieu va se permuter avec lui meme)
et merci à vous tous!!!!;)
bonjour tout le monde;
j'ai un algo entre les mains mais je sais pas comment le commencer j'ai meme pas les idées pour le traiter:mrgreen:;
l'algo demandé est le voila:
c'est de transferer les elements positifs d'un vecteur V dans un vecteur positif et les éléments nuls ou negatifs dans un vecteur V negatif;et puis editer les trois vecteurs;
j'ai besoin de me donner quelque idées pour que je puisse faire mon essai pour que vous me le corrigiez apres
et merciiiiiii à vous tous!!!
ok ok je te crois :)
alors pour ton nouveau problème, puisque tu demandes a avoir 3 tableaux, tu n'auras qu'à déclarer 3 tableaux N pour les négatifs, P pour les positifs et T sera le tableau ou il y a tes valeurs.
tu parcours T[i] et tu test chaque élément puis tu renvois sur le tableau associé
merci merci ma chere :oops:bon je vais rediger mon algo pour que tu me le corrige:mouarf:
@acacia:je vous remercie infiniment vous m'aider toujours à surmonter mes problemes i swear by GOd!:piou::piou:
you're welcome :)
algorithme:positif_negatif
debut
variables:N tableau de Nmax
T tableau de t éléments
P tableau de P max
i,j,k:entiers
pour i allant de 1 à t faire
lire(T[i])
fin pour
si T[i] inferieur ou egale à 0 alors N[k]=T[i] finsi
si T[i] superieur strict à 0 alors P[j]=T[i] finsi
ecrire('le vecteur initiale',T,'est',T[i])
ecrire('le vecteur positif',P,'est',P[j])
ecrire('le vecteur negatif',N,'est,N[k])
fin
NB:j ai utilisé 3 indices k i et j,parce que si un element du tableau T se trouve à la 3eme place dans N ou P se trouvera sur 1 position par exemple
donc je sais pas si ce que j'ai fait est bien correcte
tu vas tester tous les éléments du tableau, le test se fait donc dans une boucle.
même chose pour l'affichage.
mais si j'utilise une boucle rep je sais pas quand est ce que ma boucle s'arretera?
attendez! peut etre comme ca