Précédent   Forum des professionnels en informatique > Autres langages > Algorithmes
Algorithmes Forum d'entraide sur l'algorithmique, l'intelligence artificielle, le traitement numérique d'images et les mathématiques. Avant de poster : Cours d'algorithmique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2012, 20h15   #1
Membre à l'essai
 
Homme
Auditeur informatique
Inscription : août 2011
Messages : 79
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Auditeur informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 79
Points : 21
Points : 21
Par défaut Algorithme donnant la plus grande valeur d'une liste

bonjour,
pouvez vous me dire si mon algorithme est bon SVP? je débute et j'ai un exam bientôt .
cet algo doit donner la valeur max d'une liste d'entiers

merci

pouvez aussi me dire si je peux poster mes solutions d'exos d'algo sur ce forum pour vérifier s'ils sont bons , le forum n'est peut être pas fait pour ça donc je préfére demander

voilà ma "prose"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
variables: liste1 :liste d'entiers
			M:entier
			X:entier
début

M:=O; //M désigne la valeur max//

tant que vide(liste1) = faux faire
	X:=premier(liste1);
		Si X>M alors //j'étais tenté de faire directement si premier(liste1)>M  erreur?//
		M:=X;
		finsi
	liste1:=reste(liste1);
fintantque

Afficher "le plus grnad entier de la liste est:";
Afficher M;

fin
merci
mathier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 20h46   #2
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 419
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 39
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 419
Points : 14 125
Points : 14 125
C'est pas mal du tout, à deux petites restrictions près.

La première: si la liste est vide, on affichera M=0
La seconde: si la liste ne contient que des valeurs négatives, on affichera aussi M=0

Pour éviter ce genre de problème, le plus simple est d'initialiser M avec le premier élément de la liste. Ca implique de gérer le cas d'une liste vide avant l'initialisation de M, ce qui n'est pas plus mal.

Code :
1
2
3
4
5
6
7
8
si vide(liste1) = vrai alors
    Afficher "la liste est vide !";
sinon
    M = premier(liste1);
    liste1:=reste(liste1);
    tantque ... .... fintantque
    Afficher M;
finsi
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/01/2012, 21h21   #3
Membre à l'essai
 
Homme
Auditeur informatique
Inscription : août 2011
Messages : 79
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Auditeur informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 79
Points : 21
Points : 21
merci , tes modif sont en effet nécessaires
j'ai deux petites questions pour l'algo:

1) est ce que j'ai le droit dans le SI de faire si X> premier(liste1) directement c'est à dire sans placer premier(liste1) au préalable dans une variable M ?

2) tu as écrit M=premier(liste1) et pas comme moi M:=premier(liste1) est ce que c'est parce que c'est pareil?

merci
mathier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 21h47   #4
Membre Expert
 
Avatar de prgasp77
 
Homme Yankel Scialom
Ingénieur en systèmes embarqués
Inscription : juin 2004
Messages : 812
Détails du profil
Informations personnelles :
Nom : Homme Yankel Scialom
Âge : 25
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Ingénieur en systèmes embarqués
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juin 2004
Messages : 812
Points : 1 039
Points : 1 039
Bonjour, je me permets de répondre pour pseudocode qui ne manquera pas de donner son avis s'il diffère du miens.
Citation:
Envoyé par mathier Voir le message
1) est ce que j'ai le droit dans le SI de faire si X> premier(liste1) directement c'est à dire sans placer premier(liste1) au préalable dans une variable M ?
Oui c'est possible. Et sauf conditions très particulières c'est tout à fait équivalent.

Citation:
Envoyé par mathier Voir le message
2) tu as écrit M=premier(liste1) et pas comme moi M:=premier(liste1) est ce que c'est parce que c'est pareil?
Il faut savoir qu'il n'existe pas de norme absolue en terme de pseudocode (), chaque professeur a ses propres notations. Du coup, il est parfois difficile de se comprendre sans ambiguïté aucune. Pseudocode voulait évidement signifier := (opérateur d'affectation)

Cordialement,
__________________
gasp in touch
-- Yankel Scialom
prgasp77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2012, 22h18   #5
Membre à l'essai
 
Homme
Auditeur informatique
Inscription : août 2011
Messages : 79
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Auditeur informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 79
Points : 21
Points : 21
voilà j'ai modifié le pseudo code avec vos remarques, est ce bon?
ça donne
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
debut
si vide(liste1)=vrai alors
    afficher "la liste est vide";
sinon
    M:=premier(liste1);
    liste1:=reste(liste1);
    tant que vide(liste1) = faux faire
        si premier(liste1)>M alors
            M:=premier(liste1);
        finsi
        liste1:=reste(liste1);
    finTQ
finsi
Afficher M;
fin
merci
mathier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h31.


 
 
 
 
Partenaires

Hébergement Web