EVALUATION EN ALGORITHMIQUE TEST  11 / XX  

Exercice 01 : 5pts

  1. Ecrire un algorithme permettant de calculer la valeur de l’expression E, telle que E=(1+2)x(1+2+3)x(1+2+3+4)x...x(1+2+3+...+(N-2)+(N-1)+N), et (N≥2).
  2. Concevoir un algorithme qui prend en paramètre deux entiers a et b , s’arrête avec un message d’erreur si a > b , et demande sinon à l’utilisateur de saisir un entier c puis indique par un message si c est dans l’intervalle [ a , b ] ou non.

Exercice 02 : Structure Répétitive 4pts

Lea etudiant en chimie et Tom etudiant en physique  ont besoin de déterminer la dureté de chacune de ces 6 éprouvettes dans le cadre d'étude mener sur dans le Labo Pandas en chine. Pour chaque éprouvette, il mesure la dureté 3 fois. Il note ses résultats dans un tableau (TB) en brouillon puis il dessine sur son compte rendu un nouveau tableau (TF) en une seule ligne contenant la moyenne des 3 duretés mesurées pour chacune des éprouvettes. Ecrire un algorithme qui permet de saisir, traiter et afficher ces deux tableaux ( TB et TF ) de mesure de dureté.

Problème : Le Queen Mary 2 11 pts

Un paquebot est un navire spécialisé dans le transport de passagers en haute mer, que son but soit d'assurer une liaison (paquebots de ligne, dont les plus célèbres sont les transatlantiques) ou bien un voyage d'agrément (paquebots de croisière). Aujourd'hui, il n'existe plus que des paquebots de croisière, évoluant en particulier en Méditerranée et dans les Caraïbes, car même le dernier transatlantique, à savoir le Queen Mary 2, ne sert que dans le cadre de voyages d'agrément. Le RMS Queen Mary 2 (« QM2 ») est un paquebot transatlantique britannique de la Cunard construit en France dans les Chantiers de l'Atlantique à Saint-Nazaire et mis en service en 2004 pour assurer la ligne régulière Europe-Amérique du Nord. Il fut à sa mise en service le plus grand paquebot au monde (en longueur et en tonnage). Il est parfois surnommé « le dernier transatlantique », étant le dernier paquebot à effectuer des traversées reliant l'Europe à l'Amérique. Un paquebot étant caractérisé par son numéro d’identification, son nom, son type (soit paquebots transatlantiques ou de croisière ) , sa longueur  , son poids , sa localisation . Les Etudiants du GROUPE GENIUS décide de proposer une solution de gestion d'un ensemble d'informations en mémoire centrale concernant un paquebot pour permettre aux utilisateur de pouvoir créer, consulter, supprimer et modifier un répertoire de 5 paquebot.

  1. Proposez une structure de donnée adéquate pour représenter une Paquebot.
  2. Proposez une structure de donnée adéquate pour représenter une liste de Paquebot.
  3.  Proposez une fonction searchPaquebot permettant de rechercher un paquebot dans l’ensemble grâce à son numéro d’identification.
  4. Proposez une fonction insertPaquebot permettant d’insérer un paquebot pris en paramètre dans l’ensemble.
  5. Proposez une fonction countPaquebot permettant de compter tous les paquebots dans l’ensemble qui ont pour nom ‘’ Queen Marry 2 ‘’.
  6. Proposez une fonction searchTypeLocPaquebot permettant de rechercher un paquebot de croisière, évoluant en particulier en Méditerranée dans l’ensemble.
  7. Proposez une fonction favoritePaquebot qui affiche tous les paquebots de nom : ‘’ Queen Marry 2 ‘’et de taille (345,03 m).
  8. Le plus long paquebot et plus gros paquebot est, depuis 2021 est le Wonder of the Seas, long de 362,15 mètres, avec pour tonnage 236 857 GT. Proposez une fonction bestOnly qui supprime tous les paquebots de nom diffèrent : [ Wonder of the Seas ] , de longueur 362,15 mètres et de poids inférieure ou égale a 236 857 GT.
  9. Proposez une fonction sortPaquebot permettant de trier tous les paquebots par le poids dans l’ensemble.
  10. Proposez une fonction updatePaquebot permettant de modifier la localisation d’un paquebot, cette fonction prendra en paramètre la liste de paquebots , le numero d’identification , la nouvelle localisation du paquebot.
  11. Proposez une fonction localSave prenant en paramètre deux une liste de nom de paquebot et une liste de paquebot et inserer dans la liste des noms de paquebot les noms des paquebots uniquement contenue dans la liste des paquebots.
  12. Proposez une fonction renamePaquebot permettant de modifier le nom des paquebots ayant pour nom : ‘’ Queen Marry 2 ’’ en ‘‘ Queen Elizabet‘ dans l’ensemble des Paquebots.

 

       Par Joel_Yk | Contact :+237652027193

 

Correction :

correction EVALUATION EN ALGORITHMIQUE TEST 11 / XX

Exercice 01 : 5 pts

1) Calcul de E = (1+2) x (1+2+3) x ... x (1+2+...+N), N ≥ 2

Idee : on calcule progressivement la somme partielle S = 1+2+...+i, puis on multiplie E par cette somme.

Algorithme CalculE;
Var N, i : entier;
Var S : entier;
Var E : entier;   // Attention : E peut devenir tres grand
Debut
  Lire(N);

  // Controle minimal
  Tantque (N < 2) faire
    Ecrire("Erreur : N doit etre >= 2. Recommencez.");
    Lire(N);
  FinTantque

  E <- 1;
  S <- 0;

  Pour i de 2 a N faire
    S <- S + i;      // S = 2 + 3 + ... + i (au premier tour S=2)
    E <- E * S;      // E multiplie par la somme courante
  FinPour

  Ecrire("E = ", E);
Fin.

Remarque : On peut aussi partir de S=1, puis aller de 2 a N, cela revient au meme si on gere bien les indices.


2) Intervalle [a,b] avec message d'erreur si a > b

Algorithme TestIntervalle;
Var a, b, c : entier;
Debut
  Lire(a, b);

  Si (a > b) Alors
    Ecrire("Erreur : a ne doit pas etre superieur a b.");
  Sinon
    Ecrire("Entrer un entier c :");
    Lire(c);

    Si (c >= a) ET (c <= b) Alors
      Ecrire("c est dans l'intervalle [a,b].");
    Sinon
      Ecrire("c n'est pas dans l'intervalle [a,b].");
    FinSi
  FinSi
Fin.

Exercice 02 : Structure Repetitive — 4 pts

Contexte : Lea (chimie) et Tom (physique) mesurent la durete de 6 eprouvettes. Pour chaque eprouvette, 3 mesures sont faites.

  • TB : tableau des mesures brutes (6 lignes x 3 colonnes)
  • TF : tableau final (1 ligne) contenant la moyenne des 3 mesures de chaque eprouvette
Algorithme Durete_Pandas;
Const L = 6;
Const C = 3;
Var TB : tableau[1..L,1..C] de reel;
Var TF : tableau[1..L] de reel;
Var i, j : entier;
Var S : reel;

Debut
  // Saisie + Calcul des moyennes
  Pour i de 1 a L faire
    S <- 0;
    Pour j de 1 a C faire
      Ecrire("Introduisez la ", j, "eme mesure de la ", i, "eme eprouvette :");
      Lire(TB[i,j]);
      S <- S + TB[i,j];
    FinPour
    TF[i] <- S / C;
  FinPour

  // Affichage TB
  Ecrire("Le tableau des resultats bruts (TB) est :");
  Pour i de 1 a L faire
    Pour j de 1 a C faire
      Ecrire(TB[i,j]);
    FinPour
  FinPour

  // Affichage TF
  Ecrire("Le tableau final des resultats (TF) est :");
  Pour i de 1 a L faire
    Ecrire("Moyenne eprouvette ", i, " = ", TF[i]);
  FinPour
Fin.

 


Probleme : Le Queen Mary 2 — 11 pts

Objectif : Gerer en memoire centrale un repertoire fixe de MAX = 5 paquebots. Chaque case du tableau represente un paquebot. Une case est considerée vide si son id = 0 (ou nom = "" selon le choix).

1) Structure de donnee pour un Paquebot

Type Paquebot = Enregistrement
  id           : entier;   // identifiant unique (0 = case vide)
  nom          : chaine;
  typeNavire   : chaine;   // "transatlantique" ou "croisiere"
  longueur     : reel;
  poids        : reel;     // tonnage (GT)
  localisation : chaine;
Fin

2) Structure de donnee pour representer une liste fixe de 5 paquebots

Const MAX = 5;
Type ListePaquebots = tableau[1..MAX] de Paquebot;

Convention importante :

  • Une case i est vide si L[i].id = 0.
  • Un paquebot est present si L[i].id ≠ 0.
  • L’identifiant id doit etre unique parmi les cases non vides.

3) Fonction searchPaquebot : rechercher par identifiant (retourne la position ou -1)

Fonction searchPaquebot(L : ListePaquebots; idCherche : entier) : entier;
Var i : entier;
Debut
  Pour i de 1 a MAX faire
    Si (L[i].id = idCherche) Alors
      Retourner i;
    FinSi
  FinPour
  Retourner -1;
Fin

4) Procedure insertPaquebot : inserer un paquebot dans une case vide

Principe en 3 phases :

  • Phase 1 : verifier que l’identifiant de P n’existe pas deja (unicite).
  • Phase 2 : chercher une case vide (id = 0).
  • Phase 3 : si une case vide existe, inserer P ; sinon afficher "Tableau plein".
Procedure insertPaquebot(Var L : ListePaquebots; P : Paquebot);
Var pos, i, vide : entier;
Debut
  // Phase 1 : unicite
  pos <- searchPaquebot(L, P.id);
  Si (pos <> -1) Alors
    Ecrire("Insertion impossible : identifiant deja existant.");
  Sinon
    // Phase 2 : chercher une case vide
    vide <- -1;
    Pour i de 1 a MAX faire
      Si (L[i].id = 0) Alors
        vide <- i;
        // on peut sortir en retournant ou en utilisant un drapeau
      FinSi
    FinPour

    // Phase 3 : inserer si possible
    Si (vide = -1) Alors
      Ecrire("Insertion impossible : tableau plein (aucune case vide).");
    Sinon
      L[vide] <- P;
      Ecrire("Insertion reussie a la position ", vide);
    FinSi
  FinSi
Fin

5) Fonction countPaquebot : compter les paquebots nommes "Queen Marry 2"

Fonction countPaquebot(L : ListePaquebots) : entier;
Var i, c : entier;
Debut
  c <- 0;
  Pour i de 1 a MAX faire
    Si ((L[i].nom = "Queen Marry 2") Alors
      c <- c + 1;
    FinSi
  FinPour
  Retourner c;
Fin

6) Fonction searchTypeLocPaquebot : chercher un paquebot de croisiere en Mediterranee

Fonction searchTypeLocPaquebot(L : ListePaquebots) : booleen;
Var i : entier;
Debut
  Pour i de 1 a MAX faire
    Si ((L[i].typeNavire = "croisiere") ET (L[i].localisation = "Mediterranee") Alors
      Retourner VRAI;
    FinSi
  FinPour
  Retourner FAUX;
Fin

7) Procedure favoritePaquebot : afficher ceux de nom "Queen Marry 2" et longueur 345.03

Procedure favoritePaquebot(L : ListePaquebots);
Var i : entier;
Debut
  Pour i de 1 a MAX faire
    Si (L[i].id <> 0) ET (L[i].nom = "Queen Marry 2") ET (L[i].longueur = 345.03) Alors
      Ecrire(L[i].id, " | ", L[i].nom, " | ", L[i].longueur, "m | ", L[i].poids, "GT | ", L[i].localisation);
    FinSi
  FinPour
Fin

8) Procedure bestOnly : supprimer tous les paquebots qui ne respectent pas le profil "Wonder of the Seas"

Regle : on ne garde que les paquebots tels que :

  • nom = "Wonder of the Seas"
  • longueur = 362.15
  • poids > 236857

Suppression + decalage : si on supprime a l’indice i, on decale a gauche pour combler le trou, puis on met la derniere case en "vide" (id=0).

Procedure bestOnly(Var L : ListePaquebots);
Var i, j : entier;
Debut
  i <- 1;
  Tantque (i <= MAX) faire
    Si (
        (L[i].nom <> "Wonder of the Seas") OU
        (L[i].longueur <> 362.15) OU
        (L[i].poids <= 236857)
       ) Alors

      // decaler a gauche
      Pour j de i a MAX - 1 faire
        L[j] <- L[j + 1];
      FinPour

      // liberer la derniere case
      L[MAX].id <- 0;
      L[MAX].nom <- "";
      L[MAX].typeNavire <- "";
      L[MAX].longueur <- 0;
      L[MAX].poids <- 0;
      L[MAX].localisation <- "";

      // ne pas incrementer i : il faut re-tester la nouvelle valeur arrivee a i
    Sinon
      i <- i + 1;
    FinSi
  FinTantque
Fin

9) Procedure sortPaquebot : trier par poids (en ignorant les cases vides)

Regle : on ne compare/permute que les cases non vides (id ≠ 0).

Procedure sortPaquebot(Var L : ListePaquebots);
Var i, j : entier;
Var tmp : Paquebot;
Debut
  Pour i de 1 a MAX - 1 faire
    Pour j de i + 1 a MAX faire
      Si (L[i].id <> 0) ET (L[j].id <> 0) ET (L[i].poids > L[j].poids) Alors
        tmp <- L[i];
        L[i] <- L[j];
        L[j] <- tmp;
      FinSi
    FinPour
  FinPour
Fin

10) Fonction updatePaquebot : modifier la localisation via id

Fonction updatePaquebot(Var L : ListePaquebots; idCible : entier; newLoc : chaine) : booleen;
Var pos : entier;
Debut
  pos <- searchPaquebot(L, idCible);
  Si (pos = -1) Alors
    Retourner FAUX;
  Sinon
    L[pos].localisation <- newLoc;
    Retourner VRAI;
  FinSi
Fin

11) Procedure localSave : remplir un tableau de noms a partir de la liste de paquebots

Idee : on copie uniquement les noms des paquebots non vides dans un tableau NOMS. On peut aussi renvoyer nb (le nombre de noms copies).

Procedure localSave(L : ListePaquebots; Var NOMS : tableau[1..MAX] de chaine; Var nb : entier);
Var i : entier;
Debut
  nb <- 0;
  Pour i de 1 a MAX faire
    Si (L[i].id <> 0) Alors
      nb <- nb + 1;
      NOMS[nb] <- L[i].nom;
    FinSi
  FinPour
Fin

12) Procedure renamePaquebot : renommer tous les "Queen Marry 2" en "Queen Elizabet"

Procedure renamePaquebot(Var L : ListePaquebots);
Var i : entier;
Debut
  Pour i de 1 a MAX faire
    Si ((L[i].nom = "Queen Marry 2") Alors
      L[i].nom <- "Queen Elizabet";
    FinSi
  FinPour
Fin

Fin du probleme.

Par Joel_Yk | Contact : +237652027193

Si vous avez trouvé les eaxamens corrigés en Algorithme de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

Télécharger L'exercice Sous Forme de PDF

 

Questions / Réponses

Aucune question. Soyez le premier à poser une question.
Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam