Informasjon

Frist Ingen frist
Innleveringsgrense Ingen begrensning

Merkelapper

Logg inn

[7.6] Les sanglots longs [Obligatoire]

Comme tout instrument, un violon permet de jouer un nombre limité de notes. On appelle cet intervalle la tessiture. La note la plus grave qu'il peut jouer est le SOL2 (fréquence: 196.00 hz), et la note la plus aigüe qu'il peut jouer (hors exceptions) est le FA5 (1396.91 hz). Deux notes qui se suivent forme un mouvement mélodique, soit ascendant (si les fréquences successives augmentent) soit descendant (si les fréquences successives diminuent). On appelle ça le "sens" du mouvement mélodique.

Ainsi, dans la suite de fréquences suivantes: 440 231 134 182 143, on a un mouvement mélodique descendant (440 231 134), puis un mouvement mélodique ascendant (134 182) puis un descendant à nouveau (182 143).

Remplacez les TODO du programme ci-dessous afin qu'il reçoive en entrée chaque fréquence de note jouée par un utilisateur ainsi que la durée (en milisecondes) de cette note et qui détermine:

  • la note qui a été jouée le plus longtemps (attention, pas dont la somme des durées est la plus longue !)
  • le nombre de changements de sens du mouvement mélodique.

Évidemment, ne prenez en compte que les fréquences qui se trouvent dans la tessiture du violon !

Cas particulier
Une séquence de notes identiques n'est jamais constituée comme un changement de mouvement mélodique. Ainsi, dans la suite: 440 231 231 231 134 186 , il n'y a qu'un seul changement mélodique, qui a lieu entre 134 et 186 !

Essayez de déterminer l’invariant de votre boucle pour cet exercice !

Exemple

Voici quelques exemples d'exécution du programme.

3
Entrez successivement la fréquence et la durée de chaque note :
450 200
460 300
470 200
Changements de sens: 0
La note la plus longue est 460.00 et a été jouée pendant 300 ms.
3
Entrez successivement la fréquence et la durée de chaque note :
450 300
445 200
440 200
Changements de sens: 0
La note la plus longue est 450.00 et a été jouée pendant 300 ms.
5
Entrez successivement la fréquence et la durée de chaque note :
450 200
460 200
460 200
470 300
470 200
Changements de sens: 0
La note la plus longue est 470.00 et a été jouée pendant 300 ms.
5
Entrez successivement la fréquence et la durée de chaque note :
450 200
445 200
445 200
440 200
440 300
Changements de sens: 0
La note la plus longue est 440.00 et a été jouée pendant 300 ms.
3
Entrez successivement la fréquence et la durée de chaque note :
450 200
460 300
450 200
Changements de sens: 1
La note la plus longue est 460.00 et a été jouée pendant 300 ms.
3
Entrez successivement la fréquence et la durée de chaque note :
450 200
440 200
450 300
Changements de sens: 1
La note la plus longue est 450.00 et a été jouée pendant 300 ms.
4
Entrez successivement la fréquence et la durée de chaque note :
440 200
450 200
450 400
440 200
Changements de sens: 1
La note la plus longue est 450.00 et a été jouée pendant 400 ms.
4
Entrez successivement la fréquence et la durée de chaque note :
460 200
450 200
450 400
460 200
Changements de sens: 1
La note la plus longue est 450.00 et a été jouée pendant 400 ms.
6
Entrez successivement la fréquence et la durée de chaque note :
440 200
450 200
450 400
460 200
470 200
460 300
Changements de sens: 1
La note la plus longue est 450.00 et a été jouée pendant 400 ms.
5
Entrez successivement la fréquence et la durée de chaque note :
460 200
450 200
450 400
440 200
450 200
Changements de sens: 1
La note la plus longue est 450.00 et a été jouée pendant 400 ms.
5
Entrez successivement la fréquence et la durée de chaque note :
460 200
450 200
440 400
450 200
440 200
Changements de sens: 2
La note la plus longue est 440.00 et a été jouée pendant 400 ms.

Évaluation

Votre code va être compilé puis testé avec plusieurs valeurs d'entrées différentes pour vérifier qu'il fonctionne bien.

Cependant, prenez déjà l'habitude de tester votre code vous-mêmes car il n'y aura pas INGInious pour le vérifier automatiquement dans l'exercice récapitulatif.

Veuillez aussi suivre les bonnes pratiques suivantes car INGInious ne sait pas les vérifier automatiquement mais elles seront vérifiées dans l'exercice récapitulatif :

  • Les noms des variables, constantes, paramètres et fonctions créés sont-ils pertinents ? Correspondent-ils vraiment à ce qu'ils doivent contenir ?
  • Est-ce que le code est correctement factorisé ? Est-ce qu'il est possible de déplacer du code en dehors des sélections ou de créer des fonctions pour avoir moins de code dupliqué ?
  • Est-ce que les sélections et conditions sont correctement organisées ? Est-ce qu'il est possible de changer l'ordre des sélections ou des conditions pour diminuer leur nombre ?
  • Est-ce que toutes les fonctions sont bien spécifiées avec des préconditions et postconditions claires ?

Le code