JE dois créer des algorithmes sauf que je ne trovue pas tout : pourriez vous m'aider pour ceux que je n'ai pas trouvé?
On considére un tableau a contenant des entiers. On appelle n le nombre d'éléments de a. le i-ème élément de a est noté a.
* Soit m . algorithle dqui retourne vrai si et seulement si tous les éléments du tableau sont coimlpris entre 1 et m
je propose :
Validité < -- faux
Tant que a>1 (supérieur ou égal bien sur ) fais :
Si a <n alors vvalidité <--vrai sinon validitié <--faux ;
fait ;
vrai
* donner le plus grand élément de a (algorithme).
Pour i de 1 à n, fais
si max<a alors max <-- a fait
max
a partir de la je suis bloqué:
En n'utilisant pas le calcul précédent et en ne faisant que une seule boucle : trouver (sachant que les nombres du tableau sont tous distincts (pour simplifier) les deux plus grands éléments du tableau ... je ne sais absolument pas faire ...
Et la suite est encore pire :
On veut écrire un algorithme qui teste si le tableau contient des entiers distincs deux a deux . Si c'est le cas alors faux sinon vrai. Deux méthodes sont proposées :
* prendre des éléments de a un par un et examiner si l'élément considéré se retrouve ou non ailleurs dans le talbeau. On metrea faux si on le rertrouve ailleurs.
* On supopseque que tous les entiers du tableau sont compris entre 1et m. On construit un tabelau [1...m] dont tous les éléments sont mis initialement a faux. On examine les éléments du tableau a un par un, si le contenuè de la case a est faux alors la valeur a [i ] n,'a pas encore été rencontrée et on met vrai..., par contre si le contenu est vrai, cela signifie que la valeur a [i a déja ete rencontrée et odnc que le tableu contient deux fois une meme valeur (au secours!
Voila je n'y comprends vraiement rien pourriez vous m'aider merci d'avance
Salut Marc,
1) Vérifier que ts les entiers entre 1 et m
tableauFaux <-- faux
j<--0
Tant que non (tableaufaux et j>=n) faire
Si (aj<1) ou (aj>m) alors
tableauFaux<--vrai
FinSi
j<--j+1
Fin Tant que
2) OK
3)
Max1<--a1
Max2<--a2
Pour i=3 à n faire
Si ai>Max1 alors
Max1<--ai
Sinon
Si ai>Max2 alors
Max2<--ai
FinSi
FinSi
FinPour
4)
1ère méthode
NonDistinct<--faux
i<--1
Tant que non (NonDistinct et i>n) faire
j<--2
Tant que non (NonDistinct et j>=n-i) faire
Si ai=aj alors
NonDistinct<--vrai
FinSi
j<--j+1
Fin tant que
i<--i+1
Fin Tant que
Bon, je te laisse le dernier.....je vais faire une overdose sinon....
A+
MErci beaucoup de votre réponse.. néanmoins n'ayant psas envie de recopier sans comprendre je me permets de poser des questions (le dernier algorithme non traité etant donné que j'ai déja du mal avec l'énoncé... je ny arrive pas mais passons)
ALors l'algorithme 3 est clair parfait
l'algorithme 2 je ne comprends pâs... paske cdapres celui ci , si a<1 ou >m alorrs VRAI sauf que le tableau devrait retourner vrai seulement si tout les nombres sont compris entre 1 et m ... ? mais peut etre suis je a coté du coup
De meme pour le dernier, il est écrit si ai = aj alors =vrai ... mais il me semble que c'est justement faux on n'a vrai que si quel que soit i et j a i et aj ne sont pas égaux..
Voila merci d'avance
Rebonjour Marc,
Effectivement, j'ai inversé vrai et faux. Il suffit alors de changer les paramètres de la variable booléenne (faux devient vrai et vice versa). La condition du "tant que" change alors :
Tant que non (NonDistinct=faux et ...) faire
Voilà tout.
a ca me rassure j'ai donc au moins partiellement compris
bon il m'en reste encore un je crois que je vais devoir laisser tomber lol parceque il mle semble vriament dur comparé aux deux premiers! merci bcp en zo
bon allez, le dernier vite fait
//initialisation du tableau à faux
Pour i de 1 à m faire
b[i]=faux //b est le nom du tableau de booléens
FinPour
Verif<--faux
j<--1
Tant que non (Verif ou j>n) fairek<--a[j] //k est la valeur de la j-ème valeur du tableau a
Si b[k]=vrai alors //signifie que la j-ème valeur du tableau a déjà été rencontrée--> si la j-ème valeur de a vaut k alors elle est au rang k dans le tableau b
Verif<--vrai
FinSi
b[k]<--vrai //on signale que l'on a rencontré la j-ème valeur
j<--j+1
Fin Tant que
A+
merci bcp Enzo , néanmoins je rencontre un probleme avec l'algorithe 3 que vous avez fait ; il me semble qu'il ne fonctionne pas
Par ex!
Soit le tableau :
4;3;5;2;1;
on cherche les deux plus grands nombres j'applique votre algorithme
max 1 = 4 ; max 2 = 3
5 > max 1 donc max 1 = 5
Et on va finir avec max 1 = 5 et max 2 = 3 alors que max 2 = 4 ...
donc voila
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :