Algorithme simple

Fermé
fmiram Messages postés 5 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 3 juin 2009 - 3 juin 2009 à 08:43
Jodu Messages postés 91 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 - 3 juin 2009 à 10:43
Bonjour,

Est-ce que quelqu'un pourrait écrire l'algorithme ce-dessous.

Il s'agit d'un exercice non-fait en cours et vu que j'ai examen aujourd'hui, j'aimerais comparer ma réponse avec la bonne réponse.

Voici l'énoncé:

http://imageshack.com/f/0ealghoritmej

Merci d'avance
A voir également:

13 réponses

Jodu Messages postés 91 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
3 juin 2009 à 09:57
Salut,

l'algo en général m'a l'air bon, mais pas à 100%.
J'ai pas encore pris mon café, je peux me tromper.

Une fois que l'utilisateur a saisi son numéro d'article, admettons il saisit 100. Le numéro est trop petit, donc on l'invite à ressaisir. Cette fois, le numéro est encore trop petit, eh bien la saisie se fait quand même dans le programme car plus de contrôle disponible (vu qu'on ne remonte pas la boucle).
Donc j'aurais fait une autre boucle disant :
demander "numero article"
art <- valeur saisie par l'utilisateur
si art < 1000 ou art > 9999
   tant que art < 1000 ou art > 9999
      demander "numéro article"
      art <- valeur saisie par l'utilisateur
   fin tant que
fin si


Pour ta solution, le contrôle du "-1" se faisait au bout de 2 saisies, la première tu saisis -1, trop petit donc on recontrôle, tu ressaisis -1, on enregistre, on regarde la condition de la boucle, les conditions ne sont plus remplies, on quitte la boucle.

Avec ma solution, aucune échappatoire possible car la valeur doit toujours être comprise entre 1000 et 9999.
Pour ce contrôle, je propose ceci :
demander "numero article"
art <- valeur saisie par l'utilisateur
si art = -1
  afficher "procédure terminée"
  sortir du tant que
fin si
si art < 1000 ou art > 9999
   tant que art < 1000 ou art > 9999
      demander "numéro article"
      art <- valeur saisie par l'utilisateur
   fin tant que
fin si


Il faut aussi vérifier la valeur de la quantité saisie, ce que tu n'as pas fait. Après mon code, je mettrais la même structure de contrôle "si quantité produit <= 0, alors tant que quantité produit <= 0, faire saisir Q à l'utilisateur".

C'est pas très sorcier, et je pense que tu peux y arriver seul fmiram mais en aucun cas je te donnerais une solution complète. Avec le code que je t'ai fourni tu devrais y arriver.
1
Jodu Messages postés 91 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
3 juin 2009 à 10:10
De rien Fmiram, bon courage pour ton exam (BTS ? Bac STG ?)

Brachior : j'aime pas le "tant que ( art != -1 OU ( art >= 1000 ET art <= 9999) )"
tu dois mettre un ET, car si tu saisis 10, tu rentres dans la boucle.
Et tu fais de l'anglais (do) et du français (faire), j'aime pas personnellement.

Je ne sais pas ce que tu voulais faire avec ton "tant que ( art != -1 )" à la fin.

Et après ta saisie de quantité que fais tu ?

Plus de précisions si possible :)
1
Jodu Messages postés 91 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
3 juin 2009 à 10:43
Boarf tu sais l'algo, au premier abord ça effraie, on y comprend rien du tout... Mais d'un coup, la logique rentre, et là on se sent... une autre personne =D
Une fois que la logique est là, je te promet que c'est pas difficile.

La théorie des composants d'un ordi... C'est pas dur, c'est du par coeur =D
1
fmiram Messages postés 5 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 09:38
Voici ma réponse

art entier
Q entier

Begin

Art<---1000
Q<-----1

While Art=/= -1 do

"demander n° d'article"

Art<---Valeur entrée par utilisateur.

"demander quantité"

Q<-----Valeur entrée par utilisateur.

If Art<1000 do
"nombre trop petit"
"veuillez réintroduire une valeur"
Art<---valeur entrée par l'utilisateur
elseif Art>9999 do
"nombre trop grand"
"veuillez réintroduire une valeur"
Art<---valeur entrée par l'utilisateur
else
"ok"
end if
end if

end While

end
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fmiram Messages postés 5 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 10:03
Merci beaucoup pour ta réponse très complète.
J'avais en effet remarqué par après que je n'avais pas contrôle la quantité.
Ma structure générale n'est pas mauvaise, c'est déjà ça.
Je vais retraivaillé tout ça merci encore.
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
3 juin 2009 à 10:04
Moi j'le vois comme ca :
faire
	faire
		"Entrez un numero d'article (entre 1000 et 9999) : "
		art <- saisie
	tant que ( art != -1 OU  ( art >= 1000 ET art <= 9999) ) /* ordre important */
	si art != -1
		"Entrez une quantite : "
		do
			qte <- saisie
		tant que ( qte >= 0 )
	fin si
tant que ( art != -1 )
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
3 juin 2009 à 10:17
le "do" et le "faire" c'est une etourderie (programmation en C donc habitude ^^)
le "tant que ( art != -1 OU ( art >= 1000 ET art <= 9999) )" est la fin du faire
c'est un "do while" et non un "while"
ce qui fait que si tu est egale a -1 tu quitte la boucle
sinon si tu est compris entre 1000 et 9999 tu quitte la boucle.

et le "tant que (art != -1)" est aussi un "do while" et non un "while"

en fait j'ai aucun "while" mais que des "do while" car l'algo demande une saisie avant controle,
ca evite une saisie puis un test et une boucle de saisie ( ce qui double la saisie inutilement )
0
Jodu Messages postés 91 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
3 juin 2009 à 10:23
D'accord, j'avais pas compris que c'était un do while ton premier.

Je m'écrase alors =)
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
3 juin 2009 à 10:26
y a pas de mal ^^
c'est plus visible avec des accolades ^^
0
fmiram Messages postés 5 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 10:33
première année de bac en science de gestion à l'unnif (Belgique)

Le cours c'est informatique de gestion 1, c'est la première fois que je faisait ce genre de truc :)

Verdict à 13h30 :)
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
3 juin 2009 à 10:35
et bien j'te souhait une grosse merde alors ;)
0
Jodu Messages postés 91 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 3 février 2010 14
3 juin 2009 à 10:35
D'accord, tu nous diras si c'est tout bon =D

J'espère tu as bien compris, si c'est un oral tu devras bien expliquer ;)

Bon courage.

Edit : grilled de 3 secondes =O
0
fmiram Messages postés 5 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 10:40
Heureusement c'est écrit :)

Ce qui n'empêche que ça va être chaud parce que c'est un des cours le plus dur avec le language machine mais aussi la théorie sur tous les composants de l'ordi, les logiciels,.....

Merci pour vos encouragement :D
0