Exercice d'algo a resoudre

Fermé
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 27 févr. 2008 à 10:40
 nnou - 3 mai 2008 à 09:52
Bonjour,
Je cherche a resoudre cet exercice d'algorithme que j'ai commencé sans vraiment savoir si c'est bon
Merci de m'aider

Ecrire un algorithme dont le role est de saisir une serie de nombres entiers positifs et de donner en fin de saisie la plus grande valeur saisie
Un nombre egal a zero indiquera la fin de la saisie (O n'est pas pris en compte)
Si aucune valeur n'est saisie, un message d'erreur(ex: impossible de rechercher la valeur max") doit etre affiché


Voici ce que j'ai fait

Algo_max

Variables

num,max,i: entiers

Debut

Afficher("Saisissez un nombre")
Saisir(num)
max <--- 0
Tant que num>= 0
Afficher("Saisissez un nombre")
Saisir(num)
Si nim>max Alors
max<---num
Finsi
Si num="" Alors
Afficher("Impossible de rechercher un valeur max")
Finsi

Fintantque
Afficher ("La valeur max est:", max)


Est ce que c'est Bon??
Merci

14 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
27 févr. 2008 à 10:45
oui au niveau algorithme c'est bien une recherche de maximum.

Un autre manière de faire, car celle là est peu utilisable en pratique :

D'abord faire saisir tous les nombres dans un tableau.

Ensuite parcourir le tableau avec la même méthode (max = 0 au début, si on rencontre un nombre plus grand que le max, ce nombre devient le nouveau maximum).
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 10:51
Merci pour cette reponse
Donc tu confirmes bien que mes lignes d'algo sont bonnes... n'est ce pas?
Concernant le tableau,
Peux tu brievement me donner les lignes
Merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011
27 févr. 2008 à 11:05
dans le principe recherche du max, c'est ok, mais il a un petit problème :

Un nombre egal a zero indiquera la fin de la saisie (O n'est pas pris en compte)

Or toi tu arrete la saisie quand on n'écrit plus rien (num = "", ce qui n'est d'ailleurs pas très correct logiquement, un nombre n'est pas une chaine de caractère). Ce sera plutot : tant que num > 0 faire tes instructions (au lieu de num => 0). Ou laors je n'ai pas bien compris le sens du "num = "" ".

Concernant le tableau je ne connais pas le pascal, mais de façon "algorithme" c'est pas vraiment plus compliqué. Mais ce n'est pas ton exercice apparemment, ce serait un peu compliqué. Mais dans le principe :

Saisir num
Tant que num > 0
Ajouter num au tableau
Saisir num
Fin tant que

N = 0
max = 0
Tant que N < taille du tableau
si "Nième" élément du tableau > max alors max <---- "Nième" élément du tableau
incrementer N de 1 (N <--- N + 1)
fin tant que


Masi je ne sais pas à quel point ton "professeur" veut de détails dans l'algorithme. Il me semble qu'il faut déclarer els tableaux d'une certaine taille en pascal, donc la simple ligne "ajouter un élément au tableau" signifie peut etre aussi agrandire le tableau en conséquence.
0
ginior Messages postés 4 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 7 avril 2008
28 févr. 2008 à 13:47
Salut
je croi que le faite d utiliser un tableau vas obliger l utilisateur de limiter le nombre d entiers dont il veut chercher le max entre eux ce qui n est pas le cas ici car il est libre de donner le nombre des entiers tanqu il n a pas saisi un 0 sa serai mieux de faire comme ceci:

algorithme rechermax
var num ,i ,max :entier
debut
i<-- 0
repeter
saisir (num )
i<-- i+1
jusqua(num>0 ou i<4)
/*ceci vous permet de forcer l utilisateur a entrer le premier num >0 au bout de 3 essais seulement si non il declancherar un message d erreur*/
si(i=4) alors
("message d erreur")
si non
/*a ce stade l utilisateur a donner un num >0 donc on peut commencer le traitement*/
max<--num
aficher ("donner un autre entier")
saisir (num)
tanque (num>0) faire
aficher ("donner un entier >0")
saisir (num)
si (num>max) alors
max<-- num
fin si
fin tanque
afficher(" le maxumum est",max)
fin si
fin



si vous aver mal a comprendre ceci contacter moi à
theking.n10@gmail.com
0
houbie Messages postés 34 Date d'inscription samedi 18 août 2007 Statut Membre Dernière intervention 12 février 2013 2
27 févr. 2008 à 10:56
tu as oublié de verifier que c'est != de 0
et
Tant que num>= 0
Afficher("Saisissez un nombre")
c'est plutot
Tant que num>0
Afficher("Saisissez un nombre")
Sinon j crois que pour les reste ça va
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 11:04
Bonjour et merci de cette reponse

JE n'ai pas compris la premiere phrase: "tu as oublié de verifier que c'est != de 0"

Ou suis je censé mettre ça?
merci
0
illarrebi Messages postés 30 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 novembre 2008
27 févr. 2008 à 11:05
bonjour

il faut préciser combien de nombre tu veux saisir
ou bien un nombre indéterminé alors dans ce cas c autre chose ton algorithme est au dessous de moyen (objectivement)


faites encore des efforts.

merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > illarrebi Messages postés 30 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 novembre 2008
27 févr. 2008 à 11:06
dans l'énoncé il en saisie indéfniniment jsuqu'à ce que le nombre soit 0


PS " != 0 " signifie différent de zéro, en tout cas en C, peut etre en pascal aussi.
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 11:09
Si tu n'as pas encore vu les tableaux il est preferable que tu garde ton programme car si on commence l'algo il faudrai t'expliquer comment utilisé les tableaux. Enfin c'est mon avis ^^.
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 11:16
Je commence en effet l'algorithme
je n'utilise pas encore les tableaux

Merci pour ces reponses
Je ne sais pas trop en fin de compte si j'ai bien fait ou non l'exo...
Est ce qu'il marche si on devait l'essayer

Y a til un logiciel pour tester son algorithme?

Merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011
27 févr. 2008 à 11:22
ça s'appelle un langage de programmation ;)

Il faut traduire les instructions "algorithmiques" (qui ne sont que des idées humaines) en code, selon ton langage de programmation. ça peut etre compliqué.

Par exemple en C++ "saisir num" pourrait s'écrire
cin << num
et ce serait complètement autre chose en Pascal ou en autre langage.

Le mieux c'est de prendre un papier et un crayon et de suivre SCRUPULEUSEMENT ce que tu as écrit, imagine un utilisateur qui saisirait 10 puis 20 puis 34 puis 21 puis 11 et enfin 0.
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 11:19
Ton algo niveau papier fonction mais si tu veux le tester va falloir le transposé dans un language comme C ou C++.
Mais il y a des truc sur papier qui fonction mais si tu le test en machine ne fonctionnera peu etre pas :).
0

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

Posez votre question
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 11:26
J'avais oublie cette solution xD ca peut etre long mais c'est tres utile et un bon automatisme a prendre comme sa tu pourra voir si tes algo fonction.
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 11:37
Merci


Je passe donc a l'exercice suivant que j'ai effectué

Ecrire un algorithme dont le role est de permettre à l'utilisateur de saisir une serie d'entiers positifs
La valeur 0 indique la fin de la saisie
Chaque valeur saisie ne peut etre egale ou inferieure a la precedente (si le cas se presente, la valeur n'est pas prise en compte et l'utilisateur doit en saisir une nouvelles.
Chaque valeur doit etre numérotée

Exemple d'execution (en gras ce qui est saisi par l'utilisateur):

Saisir la valeur numero 1 : 6
Saisir la valeur numero 2 : 12
Saisir la valeur numero 3: 23
Saisir la valeur numero 4 : 20
Valeur Incorrecte!!!
Saisir la valeur numero 4 : 21
Valeur Incorrecte!!!
Saisir la valeur numero 4 : 41
Saisir la valeur numero 5 : 0
A une prochaine

Voici ce que j'ai effectué:

14) Algo_plus_grand_que

Variables

Debut

Afficher(« Saisir la valeur n° » :, j )
Saisir(num)
i <--- 0
Tant que num> i
I<--num
j<--j+1
Si num<=i Alors
Afficher("Valeur incorrecte!!!")
Afficher(« Saisir la valeur n° » :, j+1 )
Saisir(num)
FinSi
Si num=0
Afficher("A une prochaine")
Finsi
Fintantque
Fin
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 11:44
c correct il y a juste :
Afficher(« Saisir la valeur n° » :, j+1 )
pq j+1 j'aurai mis j moi.
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 12:31
ok, je vois pourquoi j et non j+1, vu que j'ai deja affecté apparavant...
merci
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 12:34
pas de problème dis moi si tu a encore besoin d'aide ^^.
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 12:41
Merci

pour ce suivant exo, je dois ecrire un algo qui permet a l'utilisateur de faire une addition ou une soustraction a partir de 2 nombres
Definir les specifications de l'algorithme

Voici ce que j'ai fiat:

1)Algo_add-ou_soustraction

Variables

Debut

Afficher(« Saisir un nombre : » )
Saisir(num1)
Afficher(« Saisir un autre nombre : » )
Saisir(num2)
Afficher(« Addition ou soustraction ? » )
Saisir(i)
Si i= « Addition » Alors
Total_add<-num1+num2
Afficher (Total_add)
Sinon
Si num2<num1 Alors
Total soustr<- num1-num2
Afficher (Total_soustr)
Finsi
Finsi

Fin


Es ce correct?

Merci
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 12:54
Oui juste n'oublie pas d'initialisé Total_add et Total_soustr à 0
et aussi si on mais soustraction et que num1<num2 il se passe quoi?
(Total_soustr n'a pas le droit d'etre negatif?)
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 13:40
A quel numero de ligne je dois les initialisé??
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 14:07
juste apres le Debut tu fais Total_add<-0 et Total_soustr<-0
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 14:22
Voila j'ai fais la correction, estce correct??
Est ce que vous connaitriez un logiciel qui execute ces lignes et qu montre si j'ai faux ou pas??
y a t'il un logiciel qui integre deja les mots tel que "debut, afficher, ect..." histoire que je n'ai pas a les réecrire a chaque fois que je fais un exo..??
Sinon c'est pas bien grave..ca rentre mieux comme ca..
Merci

1)Algo_add-ou_soustraction

Variables
Total_add, Total_soustr, num1, num2, i : entiers positifs

Debut
Total_add<-0
Total_soustr<- 0

Afficher(« Saisir un nombre : » )
Saisir(num1)
Afficher(« Saisir un autre nombre : » )
Saisir(num2)
Afficher(« Addition ou soustraction ? » )
Saisir(i)
Si i= « Addition » Alors
Total_add<-num1+num2
Afficher (Total_add)
Sinon
Si num2<num1 Alors
Total_soustr<- num1-num2
Afficher (Total_soustr)
Sinon
Afficher (, num2 « est trop grand pour la soustraction »)
Finsi
Finsi

Fin
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 15:05
Voici un autre algorithme effectué par rapport a cette demande
Est t'elle correct?
Ecrire un algo qui permet de prendre en compte une reduction de 20% si le total d'unefacture est superieur a 200
Definir les specifications de l'algo

1)Algo_reduc_20

Variables
facture, total : entiers positifs
Constante : reduction

Debut

Afficher (« Le montant de la facture est : » )
Saisir (facture)
Si facture>200 Alors
Total<- facture*(1-20%)
Afficher (« Vous avez droit a une réduction, voici le nouveau montant de votre facture : », Total )
Sinon
Total<- facture
Afficher (« Vous n’avez pas droit a une réduction, votre facture reste », Total)

Fin
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 15:05
Oui c'est bon. Comme on te l'a dit tout a l'heure le seul moyen de test ton algo sur ton pc c'est de le transposé dans un langage comme C ou C++... si tu connais ces langage tu a plein de logiciel que tu peux utilisé suffit de regarder sur google apres si tu connais pas de langage de programmation alors faut que tu test à la main xD.
Pour le logiciel qui te met le Debut... il y a juste les copie/colle qui peuvent t'aider ^^.
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 15:06
merci pour tout
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 15:13
Alors tu as mis
Constante : reduction donc il faut mettre la valeur de reduction qui est 0.2
ajoute une autre variable comme Montred
apres ton calcul faut faire Montred<-facture*reduction
apres Total<-facture-Montred
et apres c'est bon
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 févr. 2008 à 15:36
Bien
Merci pour ces divers corrections
Je passe a des exos de maths mainteant, aprés 4 heures d'algo...
Merci pour tout et a bientot j'esperes

Peut etre corriger ce petit dernier:
Pour etre admis au BTS il faut avooi 10/20 de moyenne
Ecrire l'algo qui permet de saisir la moyenne d'un eleve et d'affichr a l'ecran si il est recu ou recalé
Definir les specifications de l'algo

Voici mon algo est til correct

3) Algo_BTS

Variables
moyenne: entiers positifs

Début

Afficher (« Saisissez votre moyenne : »)
Saisir (moyenne)
Si moyenne>10 Alors
Afficher (« Vous êtes reçu »)
Sinon
Afficher (« Vous êtes recalé »)

Fin
0
RDB77 Messages postés 66 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 4 avril 2008 7
27 févr. 2008 à 16:06
facile celui la tu a tout bon ^^ bonne aprem maths xD
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
28 févr. 2008 à 09:36
mmmm ici l'élève qui a juste 10/20 sera recalé :) il faut remplacer "supérieur à 10" par "supérieur ou égal à 10"
0
Ecrire un algo qui permet de gerer les notes sachant que le lycéé comporte N section,chaque section est composé de G groupes et chaque groupe composé de M etudiant,chaque étudiant possede trois moyennes T1 T2 T3 est le coefficient correspendant respectivement 1,2,2

TAF:

1-Calculer la moyenne de chaque etudiant

2-Afficher la mention de chaque etudiant

3-dégager la moyenne du groupe

4-dégager le premier de chaque groupe

5-degager le nombre d'etudiant ayant une moyenne >=10

6-dégaer la moyenne de la section

7-dégager le premier de la section

8-dégager le premier du lycée

9-calculer le taux de réussite dan le lycée

10-dégager le rang de chaque étudiant
0