On désire réaliser les tâches suivantes :
1- Saisir un entier N ( 0 <N <20).
2- remplir un tableau T par N entiers positifs.
3- Inverser le tableau T.
4- Afficher le nouveau tableau T.
Exemple :
Si on donne N=7 et T
1 10 9 6 11 3 8
Après inversion on obtient
8 3 11 6 9 10 1
Ecrire le programme principal et les sous programmes nécessairs pour réaliser ces tâches.
Les algorithmes des tâches 1- et 3 doivent être récursifs et itératifs.
program inversttrecursif;
uses wincrt;
type tab=array[1..20] of integer;
var t:tab;
n:integer;
procedure saisir(var n:integer);
begin
write('taper un entier entre 1..20');readln(n);
if (n>20) or (n<0) then saisir(n);
end;
procedure remplir(var a:tab;n:integer);
var i:integer;
begin
readln(a[n]);
if a[n]<0 then remplir(a,n)
else if n>1 then remplir(a,n-1)
end;
procedure affiche(a:tab;n:integer);
var i:integer;
begin
write(a[n]:4);
if n>1 then affiche(a,n-1) ;
writeln;
end;
procedure inverser(var t:tab;d,f:integer);
var aux:integer;
begin
if d <f then
begin
aux:=t[d];
t[d]:=t[f];
t[f]:=aux;
inverser(t,d+1,f-1);
end;
end;
begin
saisir(n);
remplir(t,n);
affiche(t,n);
readln;
inverser(t,1,n);
affiche(t,n);
end.
On désire réaliser les tâches suivantes :
1- Saisir un entier N pair ( 6 <N <20).
2- remplir un tableau T par N entiers positifs.
3- Permuter deux éléments consécutifs du tableau T.
4- Afficher le nouveau tableau T.
Exemple :
Si on donne N=8 et T
1 10 9 6 11 7 3 8
Après permutation on obtient
10 1 6 9 7 11 8 3
Ecrire le programme principal et les sous programmes nécessairs pour réaliser ces tâches.
Les algorithmes des tâches 1- et 3 doivent être récursifs et itératifs.
program permut;
uses wincrt;
type tab=array[1..20] of integer;
var t:tab;
n:integer;
procedure saisir(var n:integer);
begin
write('taper un entier entre 6..20 ');readln(n);
if (n>20) or (n<6) or (n mod 2 <>0) then saisir(n);
end;
procedure remplir(var a:tab;n:integer);
var i:integer;
begin
readln(a[n]);
if a[n]<0 then remplir(a,n)
else if n>1 then remplir(a,n-1)
end;
procedure affiche(a:tab;n:integer);
var i:integer;
begin
write(a[n]:4);
if n>1 then affiche(a,n-1) ;
writeln;
end;
procedure permuter(var t:tab;d,f:integer);
var aux:integer;
begin
if d <f then
begin
aux:=t[d];
t[d]:=t[d+1];
t[d+1]:=aux;
permuter(t,d+2,f);
end;
end;
begin
saisir(n);
remplir(t,n);
affiche(t,n);
readln;
permuter(t,1,n);
affiche(t,n);
end.