Une solution pour l'exercice 3 du TP3 d'informatique en MIAS+MASS S1

Question 1

PROGRAM SuiteEtrange1 ;
VAR n : integer ;
BEGIN
write('entier ? ') ; readln(n) ;
while (n>1) do
   begin
   if ((n mod 2)=0)
      then n:=(n div 2)
      else n:=(3*n+1) ;
   write(n:8) ;
   end ;
writeln(' OK.') ;
END.


Question 2

Première solution avec un FOR

PROGRAM SuiteEtrange2 ;
VAR n, Un : integer ;
BEGIN
for n:=1 to 50 do
   begin
   writeln('POUR n=',n,' :') ;
   Un:=n ;
   while (Un>=n) do
      begin
      if ((Un mod 2)=0)
         then Un:=(Un div 2)
         else Un:=(3*Un+1) ;
      write(Un:8) ;
      end ;
   writeln(' OK') ;
   end ;
END.


Deuxième solution sans FOR

PROGRAM SuiteEtrange2 ;
VAR n, Un : integer ;
BEGIN
n:=1 ;
repeat
   writeln('POUR n=',n,' :') ;
   Un:=n ;
   while (Un>=n) do
      begin
      if ((Un mod 2)=0)
         then Un:=(Un div 2)
         else Un:=(3*Un+1) ;
      write(Un:8) ;
      end ;
   writeln(' OK') ;
   n:=n+1 ;
   until n>50 ;
END.