3MMALG11 Soutien S11 : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
 
(16 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
{{Maintenance uniquement par enseignants}}
  
 +
== Correction de la procédure <tt>FusionnerTriees</tt> ==
 +
<pre>
 +
  procedure FusionnerTriees(L1, L2: in out Liste; L: out Liste) is
 +
      Fictif: Liste;
 +
  begin
 +
      Fictif := new Cellule; L := Fictif;
 +
      while L1 /= null and L2 /= null loop
 +
        if L1.Val <=  L2.Val then
 +
            L.Suiv := L1;
 +
            L := L1;
 +
            L1 := L1.Suiv;
 +
        else
 +
            L.Suiv := L2;
 +
            L := L2;
 +
            L2 := L2.Suiv;
 +
        end if;
 +
      end loop;
 +
      --  C'est forcement L1 XOR L2 qui est null en sortie
 +
      if L1 /= null then
 +
        L.Suiv := L1;
 +
        L1 := null;
 +
      else
 +
        L.Suiv := L2;
 +
        L2 := null;
 +
      end if;
 +
      L := Fictif.Suiv;
 +
      Liberer(Fictif);
 +
  end FusionnerTriees;
 +
</pre>
 +
 +
== Examen de TP 2013-2014 ==
 +
 +
On va travailler aujourd'hui sur l'examen de TP de janvier 2013, dont vous pouvez récupérer [[Media:3MMALG11_soutien_s11.pdf|l'énoncé]] et les [[Media:3MMALG11_soutien_s11.zip|sources de départ]].
 +
 +
Le but de l'exercice est de pratiquer un véritable examen de TP, donc il n'y a pas d'explications supplémentaires : à vous de traiter le sujet comme s'il s'agissait d'une véritable épreuve !
 +
 +
Pour tester la procédure <tt>Echanger_Cellules</tt>, vous pouvez ajouter le bout de code suivant dans le programme principal :
 +
<pre>
 +
  declare
 +
      T: Tab(1..5);
 +
      L: Liste;
 +
  begin
 +
      for I in T'Range loop
 +
        T(I) := I;
 +
      end loop;
 +
      Afficher_Tableau(T);
 +
      Init_Liste(L, T);
 +
      Afficher_Liste(L, False);
 +
      Echanger_Cellules(L.Tete.Suiv.Suiv);
 +
      Afficher_Liste(L, False);
 +
  end;
 +
</pre>
  
 
[[Catégorie:Première Année]]
 
[[Catégorie:Première Année]]
 
[[Catégorie:Informatique]]
 
[[Catégorie:Informatique]]
 
[[Catégorie:Ada]]
 
[[Catégorie:Ada]]

Version actuelle en date du 11 avril 2017 à 09:30

AttentionCette page est maintenue uniquement par les enseignants. Afin de ne pas perturber le déroulement des cours, elle n'a pas vocation à être modifiée par les élèves. Mais si vous avez des modifications à proposer, merci d'en discuter ou d'envoyer un e-mail aux auteurs de la page (cf. historique)


Correction de la procédure FusionnerTriees

   procedure FusionnerTriees(L1, L2: in out Liste; L: out Liste) is
      Fictif: Liste;
   begin
      Fictif := new Cellule; L := Fictif;
      while L1 /= null and L2 /= null loop
         if L1.Val <=  L2.Val then
            L.Suiv := L1;
            L := L1;
            L1 := L1.Suiv;
         else
            L.Suiv := L2;
            L := L2;
            L2 := L2.Suiv;
         end if;
      end loop;
      --  C'est forcement L1 XOR L2 qui est null en sortie
      if L1 /= null then
         L.Suiv := L1;
         L1 := null;
      else
         L.Suiv := L2;
         L2 := null;
      end if;
      L := Fictif.Suiv;
      Liberer(Fictif);
   end FusionnerTriees;

Examen de TP 2013-2014

On va travailler aujourd'hui sur l'examen de TP de janvier 2013, dont vous pouvez récupérer l'énoncé et les sources de départ.

Le but de l'exercice est de pratiquer un véritable examen de TP, donc il n'y a pas d'explications supplémentaires : à vous de traiter le sujet comme s'il s'agissait d'une véritable épreuve !

Pour tester la procédure Echanger_Cellules, vous pouvez ajouter le bout de code suivant dans le programme principal :

   declare
      T: Tab(1..5);
      L: Liste;
   begin
      for I in T'Range loop
         T(I) := I;
      end loop;
      Afficher_Tableau(T);
      Init_Liste(L, T);
      Afficher_Liste(L, False);
      Echanger_Cellules(L.Tete.Suiv.Suiv);
      Afficher_Liste(L, False);
   end;