Program S7;
Type
Tab = Array[1..40] Of integer;
Var
T,V : Tab;
NT,NV : integer;
//**************************************
Procedure Saisie (Var N:integer);
Begin
Repeat
write('Taille du tableau [5..40]: ');
readln(N);
Until (N In [5..40]);
End;
//**************************************
Procedure Remplissage(Var T:Tab;N:integer);
Var
i : integer;
Begin
For i:=1 To N Do
Begin
Repeat
write('T[',i,'] = ');
readln(T[i]);
Until (T[i] > 0);
End;
End;
//**************************************
Function Suite(n:integer) : integer;
Var
i,U : integer;
Begin
U := 1;
For i:=1 To n Do
U := 3*U-1;
Suite := U;
End;
//**************************************
Function Appartient(x:integer) : boolean;
Var
i : integer;
Begin
i := -1;
Repeat
i := i+1;
Until (Suite(i) >= x);
Appartient := (Suite(i) = x);
End;
//**************************************
Procedure Transfert(T:Tab;Var V:Tab;NT:integer;Var NV:integer);
Var
i : integer;
Begin
NV := 0;
For i:=1 To NT Do
Begin
If (Appartient(T[i])) Then
Begin
NV := NV+1;
V[NV] := T[i];
End;
End;
End;
//**************************************
Procedure Affichage(V:Tab;NV:integer);
Var
i : integer;
Begin
If (NV=0) Then
writeln('Aucun élément de T ne correspond à un terme de la suite U')
Else
Begin
write(V[1],'|');
For i:=2 To NV Do
Begin
If (V[i] <>V[i-1]) Then
write(V[i],'|');
End;
End;
End;
//**************************************
Procedure Trier(Var T:Tab;N:integer);
Var
i,aux : integer;
permut : boolean;
Begin
Repeat
Permut := False;
For i:=1 To (N-1) Do
Begin
If (T[i]>T[i+1]) Then
Begin
Aux := T[i];
T[i] := T[i+1];
T[i+1] := Aux;
End;
End;
Until (Permut = False);
End;
//**************************************
Begin
Saisie(NT);
Remplissage(T,NT);
Transfert(T,V,NT,NV);
Trier(V,NV);
Affichage(V,NV);
End.
Inscription à :
Publier les commentaires (Atom)