Js algo td2

De The Linux Craftsman
Aller à la navigation Aller à la recherche

Introduction

Énoncé

On considère une liste de noms. Le but de l’exercice est de tirer une lettre au hasard dans l’alphabet et d’afficher les noms de la liste commençant par cette lettre.

Postulat de base

On considère le code suivant comme constituant le début du programme

var listenoms = new Array("Alain","Antoine", "Bernard", "Colin", "Christine","François", "Guy","Gérard", "Léa","Léon","Louis","Nathalie","Serge","Sylvie","Sylvain","Vincent");
var alphabet = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");

Exercice 1

Écrire une fonction lettre_au_hasard(), sans paramètre, qui retourne une lettre choisie au hasard de la liste alphabet.

Exemple : Si le nombre choisi au hasard est 2, lettre_au_hasard() renvoie la lettre C.

Solution

function lettre_au_hasard(){
    var rand = Math.round(Math.random()*25);
    return alphabet[rand];
}

Exercice 2

Écrire une fonction noms(liste,lettre) dont les paramètres sont une liste de noms, liste et une lettre, lettre.

Cette fonction créera la liste des noms de liste commençant par la lettre lettre et retournera cette liste.

Exemple :

noms(listenoms,"A")

renvoie la liste ["Alain","Antoine"]

noms(listenoms,"W")

renvoie la liste [ ] (liste vide).

Solution

function noms(liste,lettre){
    var noms = new Array();
    var i = 0;
    for ( var index in liste) {
        if(liste[index][0] == lettre){
            noms[i] = liste[index];
            i++;
        }
    }
    return noms;
}

Exercice 3

Écrire le programme qui affiche les options suivantes:

  • Il n’y a pas de noms commençant par la lettre 'Z'
  • Il y a 1 nom commençant par la lettre 'B', ce nom est Bernard
  • Il y a 3 noms commençant par la lettre 'L', ces noms sont Léa, Léon et Louis


globals.js

var listenoms = new Array("Alain","Antoine", "Bernard", "Colin", "Christine","François", "Guy","Gérard", "Léa","Léon","Louis","Nathalie","Serge","Sylvie","Sylvain","Vincent");
var alphabet = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");


tri.js

function lettre_au_hasard(){
    var rand = Math.round(Math.random()*25);
    return alphabet[rand];
}

function noms(liste,lettre){
    var noms = new Array();
    var i = 0;
    for ( var index in liste) {
        if(liste[index][0] == lettre){
            noms[i] = liste[index];
            i++;
        }
    }
    return noms;
}

function main(){
    var lettre = lettre_au_hasard();
    var names = noms(listenoms, lettre);
    var result;
    if(names.length == 0){
        result = "Il ny a pas de noms commençant par la lettre '"+lettre+"'";
    }else if(names.length == 1){
        result = "Il y a 1 noms commençant par la lettre '"+lettre+"', ce nom est "+names[0];
    }else{
        result = "Il y a "+names.length+" noms commençant par la lettre '"+lettre+"', ces noms sont ";
        for ( var index in names) {
            result += names[index];
            if(index < names.length-2){
                result += ", ";
            }else if(index < names.length-1){
                result += " et ";
            }
        }
    }
    document.getElementById('body').innerHTML = result;
}


index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>tri noms</title>
<script type="text/javascript" src="js/globals.js"></script>
<script type="text/javascript" src="js/tri.js"></script>
</head>
<body id="body">
</body>
<script type="text/javascript">
	main();
</script>
</html>