Forum Étudiants Cours ASDS

Bibliothèque sur les Tableaux

Bibliothèque sur les Tableaux

par Ahror BELAID,
Nombre de réponses : 2

Il serait très intéressant si l'un parmi vous se propose de programmer une unité sur la mise à jour et la manipulation des tableaux. Elle contiendra des fonctions et procédures pour :

- Initialisation de tout les éléments d'un tableau à 0

- Afficher les éléments d'un tableau

- ajouter un élément dans un tableau (à une position donnée ou à la fin)

- supprimer un élément (par valeur ou par position)

- Modifier un élément (par valeur ou par position)

...

Bittawfiq

En réponse à Ahror BELAID

Re: Bibliothèque sur les Tableaux

par RAYANE HAMADOUCHE,
unit biblio1;

interface
const z=4;
type vecteur= array[1..z]ofinteger;

procedurecompleter(var v:vecteur);
procedurerw (var v:vecteur);
procedurechange (var v:vecteur);
procedureafficher (v:vecteur);
functionsomme (v:vecteur):integer;
proceduremaximini (v:vecteur);
function find (v:vecteur):integer;
procedure premiers(v:vecteur);
procedure miroirs (v:vecteur);
procedure croissant(var v:vecteur);
procedure decroissant (var v:vecteur);
function PGN (v:vecteur):integer;
function PPN (v:vecteur):integer;
function occ (v:vecteur):integer;
procedure pos (v:vecteur);

implementation

procedure completer(var v:vecteur);
var i:integer;
begin
for i:=1to z do
begin
writeln('entrer la valeur de la ',i,' case');
readln(v[i]);
end;
end;

procedure rw (var v:vecteur);
var i:integer; t:char;
begin
writeln('voulez vous lire ou modifier le tableau(r/w)');
readln(t);
if t='R'then
begin
for i:=1to z do
begin
write(v[i],' ');
end;
end
else
begin
for i:=1to z do
begin
writeln('entrer la valeur de la ',i,' case');
read(v[i]);
end;
end;
 
end;

procedure change (var v:vecteur);
var i,n,n2:integer;
begin
writeln('entrer la valeur que vous voulez change');
readln(n);
for i:=1to z do
begin
if v[i]=n then
begin
writeln('par quelle entier voulez vous modifier la case');
readln(n2);
v[i]:=n2;
end;
end;
end;

procedure afficher (v:vecteur);
var i:integer;
begin
for i:=1to z do
begin
write(v[i],' ');
end;
end;

function somme (v:vecteur):integer;
var i:integer;
begin
somme:=0;
for i:=1to z do
begin
somme:=somme+v[i];
end;
writeln('la somme =',somme);
end;

procedure maximini (v:vecteur);
var i,max,min:integer;
begin
max:=0; min:=v[1];
for i:=1to z do
begin
if v[i]>max then max:=v[i];
if v[i]<min then min:=v[i];
end;
writeln('le maximum est: ',max);
writeln('le minimum est: ',min);
end;

function find (v:vecteur):integer;
var i,n:integer; test:boolean;
begin
writeln('vous cherchez quelle valeur');
readln(n);
test:=false;
i:=1;
while (i<=z) and (test=false) do
begin
if (v[i]=n) then
begin
test:=true;
find:=i;
end;
i:=i+1;
end;
writeln(n,' est dans la ',find,' case' );
end;

procedure premiers(v:vecteur);
var i,j,q:integer;
begin
for i:=1to z do
begin
q:=0;
for j:=1to (v[i] div2) do
begin
if v[i] mod j =0then
begin
q:=q+1;
end;
end;
if q=1then writeln(v[i],' est un premier');
end;
end;

procedure miroirs (v:vecteur);
var i,q,r,ri:integer;
begin
for i:=1to z do
begin
ri:=0;
q:=v[i];
while q>0do
begin
r:=q mod10;
q:=q div10;
ri:=(ri*10)+r;
end;
if v[i]=ri then writeln(v[i],' est un entier miroir');
end;
end;

procedure croissant(var v:vecteur);
var i,j,c:integer;
begin
for i:=1to z do
begin
for j:=i+1to z do
begin
if v[i]>v[j] then
begin
c:=v[i];
v[i]:=v[j];
v[j]:=c;
end;
end;
end;
end;

procedure decroissant (var v:vecteur);
var i,j,c:integer;
begin
for i:=1to z do
begin
for j:=i+1to z do
begin
if v[i]<v[j] then
begin
c:=v[i];
v[i]:=v[j];
v[j]:=c;
end;
end;
end;
end;

function PGN (v:vecteur):integer;
var i:integer;
begin
decroissant(v);
PGN:=0;
for i:=1to z do
begin
PGN:=(PGN*10)+v[i];
end;
writeln('le plus grand nombre qu''on peut former dans le vecteur est ',PGN);
end;

function PPN (v:vecteur):integer;
var i:integer;
begin
croissant(v);
PPN:=0;
for i:=1to z do
begin
PPN:=(PPN*10)+v[i];
end;
writeln('le plus petit nombre qu''on peut former dans le vecteur est ',PPN);
end;

function occ (v:vecteur):integer;
var i,val:integer;
begin
writeln('vous cherchez les occurrence de quelle nombre');
readln(val);
occ:=0;
for i:=1to z do
begin
if v[i]=val then
occ:=occ+1;
end;
writeln('les occurrence de ',val,' est ',occ);
end;

procedure pos (v:vecteur);
var i,val:integer;
begin
writeln('vous la(les) position(s) de quelle nombre');
readln(val);
for i:=1to z do
begin
if v[i]=val then
writeln('la position de ',val,' est',i);
end;
end;
end.
Annexe exo1 (1).png
Annexe exo1.png
En réponse à RAYANE HAMADOUCHE

Re: Bibliothèque sur les Tableaux

par Ahror BELAID,

Merci bien pour l'effort que tu as fourni, c'est très bien.

J'ai deux remarques très importante :

Il fait éviter de faire des lectures et écritures à l'intérieur des fonctions. Cela doit se faire à l'extérieur.  

Si la fonction a besoin des données pour fonctionner, il faut faire passer ces données en paramètres et non pas par des lectures et écritures à l'intérieur de la fonction.

Memes remarques pour les procédures.

Salam,