Exercice d'algo a resoudre

bansan Messages postés 125 Statut Membre -  
 nnou -
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
Configuration: Windows XP
Firefox 2.0.0.12

14 réponses

  1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    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
    1. bansan Messages postés 125 Statut Membre 1
       
      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
      1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663 > bansan Messages postés 125 Statut Membre
         
        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
    2. ginior Messages postés 4 Statut Membre
       
      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
  2. houbie Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   2
     
    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
    1. bansan Messages postés 125 Statut Membre 1
       
      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
    2. illarrebi Messages postés 30 Statut Membre
       
      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
      1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663 > illarrebi Messages postés 30 Statut Membre
         
        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
  3. RDB77 Messages postés 66 Statut Membre 7
     
    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
    1. bansan Messages postés 125 Statut Membre 1
       
      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
      1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663 > bansan Messages postés 125 Statut Membre
         
        ç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
  4. RDB77 Messages postés 66 Statut Membre 7
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. RDB77 Messages postés 66 Statut Membre 7
     
    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
  7. bansan Messages postés 125 Statut Membre 1
     
    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
  8. RDB77 Messages postés 66 Statut Membre 7
     
    c correct il y a juste :
    Afficher(« Saisir la valeur n° » :, j+1 )
    pq j+1 j'aurai mis j moi.
    0
    1. bansan Messages postés 125 Statut Membre 1
       
      ok, je vois pourquoi j et non j+1, vu que j'ai deja affecté apparavant...
      merci
      0
  9. RDB77 Messages postés 66 Statut Membre 7
     
    pas de problème dis moi si tu a encore besoin d'aide ^^.
    0
    1. bansan Messages postés 125 Statut Membre 1
       
      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
  10. RDB77 Messages postés 66 Statut Membre 7
     
    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
    1. bansan Messages postés 125 Statut Membre 1
       
      A quel numero de ligne je dois les initialisé??
      0
  11. RDB77 Messages postés 66 Statut Membre 7
     
    juste apres le Debut tu fais Total_add<-0 et Total_soustr<-0
    0
    1. bansan Messages postés 125 Statut Membre 1
       
      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
    2. bansan Messages postés 125 Statut Membre 1
       
      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
  12. RDB77 Messages postés 66 Statut Membre 7
     
    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
    1. bansan Messages postés 125 Statut Membre 1
       
      merci pour tout
      0
  13. RDB77 Messages postés 66 Statut Membre 7
     
    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
    1. bansan Messages postés 125 Statut Membre 1
       
      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
  14. RDB77 Messages postés 66 Statut Membre 7
     
    facile celui la tu a tout bon ^^ bonne aprem maths xD
    0
    1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      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
  15. nnou
     
    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