Bonsoir,
J'ai un peu de mal avec les tableaux, aussi si quelqu'un pouvait vérifier ma réponse à l'exo ci-dessous cela m'aiderait énormément :
Vous avez à votre disposition les déclarations suivantes :
partition [1..500] : entier // contient une succession de notes représentant une partition
taille : entier // nombre de lignes effectivement remplies dans partition
note [1..7] chaîne // contient les noms des notes de musique (1 : DO, 2 : Ré…)
Le vecteur partition va contenir les numéros des notes jouées d’une partition de musique. Chaque numéro correspond à une note dans le vecteur note (donc, pour trouver le nom correspondant au numéro, il faut aller le chercher dans le vecteur note).
Ecrire la séquence logarithmique qui permet d’afficher, pour chaque note existante, sa fréquence d’apparition dans la partition. Il faut donc compter le nombre d’apparition de chacune des 7 notes existantes. Attention, il faudra afficher le nom de la note suivi de la fréquence d’apparition. Exemple : Do : 23
Voici ma réponse :
Lexique :
partition (tableau [1..500] de entier, saisi) : tableau contenant les entiers saisis
note (tableau [1..7] de chaîne, constante) = (Do, Ré, Mi, Fa, Sol, La, Si) : tableau contenant le nom des notes de musique
taille (fonction) résultat entier : fonction qui retourne le nombre effectif
i, j (entier, calculé) : compteurs d’itération, indices
resultat : (chaîne, calculé) : chaîne contenant le message que l’on affichera à la fin du traitement.
nbOcc (entier, calculé) : nombre d’occurrences des notes dans partition
valeur (chaine, saisi) : mot dont on veut connaître la fréquence d’apparition
Algo
Début
// initialisation du nombre d’occurrences
nbOcc[j] <-- 0
// parcours séquentiel de la partie des tableaux contenant les notes
Pour i de 1 à taille(partition)
Pour j de 1 à taille(note)
Faire Si partition[i] = j
Alors nbOcc[j] <-- nbOcc[j]+1
Valeur[i]=valeur[j]
FinSi
FinPour
FinPour
Si nbOcc <>0
Alors Afficher (valeur[i], « : », nbOcc[j])
FinSi
Fin
Merci de votre aide
Partager