Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Exercices d'algo


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Homme Profil pro
    En formation
    Inscrit en
    septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : septembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Exercices d'algo
    Bonjour, je suis actuellement en formation informatique à l'afpa (depuis 2 semaines) et j'ai du mal à comprendre la partie algo sur javascript...

    Je bloque sur deux exercices, j'ai beau lire et relire le cours, je ne trouve pas de solution. Serait-il possible, svp, de m'aider en m'expliquant la démarche mise en place pour la résolution des exos?

    Exo n°1 : Écrire un programme qui saisit 2 nombres n1 et n2 et qui calcul ensuite la somme des entiers de n1 à n2.

    Exo n°2 : Écrire un programme qui saisit des entiers et en affiche la somme et la moyenne (on arrête la saisie avec la valeur 0).

    Voilà voilà, merci beaucoup pour le temps que vous m'accordez! Bonne journée!

  2. #2
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 3 934
    Points : 9 586
    Points
    9 586
    Par défaut
    Bonjour

    Écrire
    Donc ça, manifestement, tu sais faire.

    un programme
    Comme tu parles de javascript, tu sais ce qu'est un programme et tu as le langage dans lequel l'écrire.

    qui saisit 2 nombres n1 et n2
    Qu'est-ce qu'une fonction en javascript ?

    calcule ensuite la somme des entiers de n1 à n2.
    Ta fonction doit renvoyer la somme de n1 et n2.

    Nous ne ferons pas ton boulot à ta place.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Candidat au Club
    Homme Profil pro
    En formation
    Inscrit en
    septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : septembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour
    Ok ça marche, je vais faire fumer la machine dans ce cas ^^

    Juste une petite question : vous parlez de fonction, seulement nous ne les avons pas encore vu. Nous sommes actuellement sur le chapitre des boucles.
    Ce chapitre seul me suffira pour ces exercices?

    Merci, bonne journée !

  4. #4
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    3 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 3 934
    Points : 9 586
    Points
    9 586
    Par défaut
    Au temps pour moi. Tu n'as pas besoin de fonction. Tu as besoin de la commande prompt() voire window.prompt() pour demander une saisie.

    Mais ta question n'a rien à voir avec les algorithmes. Il faudrait demander au sous-forum javascript.
    Et, non, tu n'as pas besoin de boucle.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    avril 2004
    Messages
    797
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : avril 2004
    Messages : 797
    Points : 1 304
    Points
    1 304
    Par défaut
    la somme des entiers de n1 à n2.
    Ta fonction doit renvoyer la somme de n1 et n2.
    Pour résoudre un problème, il faut commencer par bien lire les énoncés ...
    Et puis il faut une boucle.
    Je ne connais pas javascript, mais il y a surement une boucle FOR ...
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  6. #6
    Candidat au Club
    Homme Profil pro
    En formation
    Inscrit en
    septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : septembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Pour le premier exo, voici mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Var a = Number;
    Var b = Number;
    Var somme = 0;
    Var i = 0;
     
    For (i = b; i <= a; i++) 
    {
        (Somme = Somme + i);
    }
    Il y a beaucoup d'erreurs?
    Merci à vous!

  7. #7
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    avril 2004
    Messages
    797
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : avril 2004
    Messages : 797
    Points : 1 304
    Points
    1 304
    Par défaut
    Ca marche si a>b, pas dans le cas contraire.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    août 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : août 2008
    Messages : 272
    Points : 873
    Points
    873
    Par défaut
    Il y a bien une boucle à l'exercice 2, mais surtout pas une "for" car on ne connait pas le nombre de tour : le travail s’arrête à la saisie de zéro. Je dirai plutôt, au choix : tant que c'est différent de 0 bosser _ou_ bosser jusqu'à ce que ce soit 0. Tu vois avec les mots du js que tu connais.
    poke 1024,0; poke 214,214

  9. #9
    Candidat au Club
    Homme Profil pro
    En formation
    Inscrit en
    septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : septembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok, du coup j'ai essayé avec une boucle tantque mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Var a;
    Var somme=0;
    Var moyenne;
    Var i=1;
     
    While (a != 0)
    {
    a=(prompt("Notes?"))
            If (a>0)
            {
                        a + somme;
             }
             i ++
    }
     
    If (a == 0)
    {
    Moyenne = somme/i ;
    }
     
    Alert ("La moyenne des notes est : " + Moyenne);

    Avez vous une idée des fautes?

    Merci beaucoup!

  10. #10
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    avril 2004
    Messages
    797
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : avril 2004
    Messages : 797
    Points : 1 304
    Points
    1 304
    Par défaut
    Quand le prog arrive la première fois à While (a != 0), a n'a encore reçu aucune valeur.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  11. #11
    Candidat au Club
    Homme Profil pro
    En formation
    Inscrit en
    septembre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : septembre 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé (a = prompt("Note?")); (a !=0) juste après while mais ça ne fonctionne pas

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 2 913
    Points : 4 785
    Points
    4 785
    Par défaut
    salut

    peut etre utiliser un repete jusqu'a ... cela te fait passer forcement une fois dans la boucle

    Repete
    ... Je bosse

    Jusqu'a a <> 0
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #13
    Membre actif
    Homme Profil pro
    web a11y
    Inscrit en
    avril 2014
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : web a11y
    Secteur : Service public

    Informations forums :
    Inscription : avril 2014
    Messages : 68
    Points : 254
    Points
    254
    Par défaut
    Déjà : tu testes la valeur de a, mais quand on teste une valeur, il faut être certain que la donnée ait une valeur.
    Donc : ou as-tu initialisé ta variable ? réponse : nulle part, donc tu n'a aucune idée de ce qu'il y a (ne jamais supposer que l'ordinateur fait des choses par défaut, et surtout pas celles qui t'arrangent dans ta tête).

    On va aller plus loin : y aurait-il une valeur utile pour initialiser ? Faut-il utiliser une autre variable pour tester si la boucle doit être effectuée ? Par exemple un booléen , ou un entier ? Là, c'est un peu ton organisation.

    Bienvenue dans le monde de la programmation _et_ de la réflexion. Il y a des points qui deviendront des automatismes. Pour l'instant : papier + crayon, et tu déroules ton algorithme (ou ton programme) à la main, et surtout sans auncun a priori sur ce qu'il se passe, uniquement sur les ordres qui ont été donnés.

    Édit : grillé, j'avais lu trop vite. Les bonnes remarques ont été faites.

  14. #14
    Membre actif Avatar de IFA2377
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    novembre 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : novembre 2007
    Messages : 149
    Points : 230
    Points
    230
    Par défaut Deux organigrammes LCP
    Qui dit algorithme, dit organigramme (ou algorigramme), c’est-à-dire un outil visuel pour décrire un algorithme. Je n’en vois guère sur ce forum pourtant dédié à l’algorithmique, je ne vois en fait que du codage. L’algorithme devrait être indépendant du langage. Non ? Ce serait plus pédagogique. Ces deux petits exercices sont intéressants pour des débutants.

    Il se trouve que ce forum est le seul de tout le site qui ne reconnaisse pas les caractères semi-graphiques entre les balises [CODE]. Je vous propose donc les organigrammes version LCP avec des caractères de substitution comme au bon vieux temps des imprimantes impact. Traduire les organigrammes en JavaScript, c’est une autre histoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Exo n° 1 : Écrire un programme qui saisit 2 nombres n1 et n2 et qui calcule ensuite la somme des entiers de n1 à n2.
     
    Simulation :
     
     Saisie             total
     
       7  ->          =   7
       8  -> 7+8      =  15
       9  -> 7+8+9    =  24
      10  -> 7+8+9+10 =  34
     
    Somme = 34
     
                         .---------------------.
                         |      n1  = ?        |          n1 =  7
                  D_PROG |      n2  = ?        |          n2 = 10
                         |      n2 :: n1       |
                n2<=n1   .----------+----------.  n2>n1
               .-------------------<?>-------------------.
               |                              .----------+----------.
               |                     D_SAISIE |  somme  = 0         |
               |                              .----------+----------.
               |                                         <-------------------.  n1    =7   n1    =8    n1    =9    n1   =10
               |                              .----------+----------.        |
    .----------+----------.                   |    somme = somme+n1 |        |  somme =7   somme =15   somme =24   somme=34
    |       MESSAGE       |          T_SAISIE |       n1 = n1 + 1   |        |  n1    =8   n1    =9    n1    =10   n1   =11
    .----------+----------.                   |      n1 :: n2       |        |
               |                              .----------+----------. n1<=n2 |  8    <10   9    <10    10   =10    11   >10
               |                                        <?>------------------.
               |                              .----------+----------.
               |                     F_SAISIE |    SOMME = somme    |
               |                              .----------+----------.
               .--------------------+--------------------.
                         .----------+----------.
                  F_PROG |          Ø          |
                         .---------------------.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Exo n° 2 : Écrire un programme qui saisit des entiers et en affiche la somme et la moyenne 
               (on arrête la saisie avec la valeur 0). 
     
     
    Simulation :
     
    saisie   entier           somme
     
     1    ->   7   ->    7  =   7
     2    ->   8   ->  7+8  =  15
     3    ->   9   -> 15+9  =  24
     4    ->  10   -> 24+10 =  34
     5    ->   0
     
    SOMME   = 34
    MOYENNE = 34/4 = 8,5
     
     
     
                         .---------------------.
                  D_PROG |  entier  = ?        |   entier = 7
                         |  entier :: 0        |
              entier = 0 .----------+----------.   entier > 0
               .-------------------<?>-------------------.
               |                              .----------+----------.
               |                     D_SAISIE | saisie = 0          |
               |                              | somme  = 0          |
               |                              .----------+----------.
               |                                         <-------------------.
    .----------+----------.                   .----------+----------.        |   
    |       MESSAGE       |                   |saisie = saisie + 1  |        |  saisie=1   saisie=2    saisie=3    saisie=4
    .----------+----------.          T_SAISIE |somme  = somme+entier|        |  somme =7   somme =15   somme =24   somme =34
               |                              |entier = ?           |        |
               |                              |entier :: 0          |        |
               |                              .----------+----------.  <> 0  |  entier=8   entier=9    entier=10   entier=0
               |                                        <?>------------------.
               |                              .----------+----------.
               |                     F_SAISIE |SOMME  =somme        |   SOMME   = 34
               |                              |MOYENNE=somme/saisie |   MOYENNE = 34/4 = 8,5
               |                              .----------+----------.
               .--------------------+--------------------.
                         .----------+----------.
                  F_PROG |          Ø          |
                         .---------------------.
    Réaliser un organigramme avec des caractères semi-graphiques n'est déjà pas évident mais avec des caractères de substitution, c'est vraiment galère. Je ne ferai pas ça tous les jours. D'autant qu'en dehors des balises [CODE] l'éditeur supprime anormalement des espaces et ajoute des balises [COLOR=black]. Il a un comportement bizarre cet éditeur.

  15. #15
    Membre averti

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2013
    Messages : 53
    Points : 379
    Points
    379
    Par défaut Algorithme & exercice n°1
    Bonjour,

    Pour faire la somme de n1 à n2, si n2 > n1 >= 0, il y a la formule classique (n2+n1)(n2-n1+1)/2. Souvent utilisée avec n1 = 0 ou 1 elle devient n2(n2+1)/2. Cela évite la boucle. La démonstration est simple, il suffit de sommer 2 fois la liste en inversant l'ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         n1  +  n1+1 +  n1+2 ... ... n2 = n1 + (n2-n1)
    +    n2  +  n2-1 +  n2-2 ... ... n1
    ----------------------------------------
    = (n1+n2)+(n1+n2)+(n1+n2)... ...(n1+n2)
    = (n1+n2)*(n2-n1+1)
    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. Exercice d'algo que je n'arrive pas a resoudre
    Par bansan dans le forum Mathématiques
    Réponses: 7
    Dernier message: 10/03/2008, 07h15
  2. exercice bts algo
    Par stèfv96 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 10/02/2008, 09h57
  3. Aide pour exercices d'algo
    Par couls dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/08/2007, 14h05
  4. probleme avec les exercices d'algo
    Par djsito1 dans le forum Windows
    Réponses: 1
    Dernier message: 20/10/2006, 14h20
  5. exercice d'algo
    Par rimbaut dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 11/12/2005, 07h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo