Soit une liste L quelconque.

Ecrire un algorithme permettant de trouver le nombre d'occurences d'un élément var (entré au clavier) dans la liste L, et l'affichant.

> L:=[4,5,4,4,7,2];

[Maple Math]

> var:=readstat("entrez un élément");
compteur:=0;
for i from 1 to nops(L) do
compteur:=`if`(L[i]=var,compteur+1,compteur);
od:
print(compteur);

entrez un élément 4;

[Maple Math]

[Maple Math]

[Maple Math]

>

>

Soit une liste de listes LL quelconque.

Ecrire un algorithme permettant de connaître le nombre total d'éléments de cette liste de listes LL (par exemple, si LL contient 3 sous-listes de respectivement 3,7 et 1 éléments, le nombre total d'éléments est $3+7+1=12$).

> LL:=[[4,3,5,4,4,3],[5,4,6],[1,4,76,234]];

[Maple Math]

> compteur:=0;
for i from 1 to nops(LL) do
compteur:=compteur+nops(LL[i]);
od:
print(compteur);

[Maple Math]

[Maple Math]

>

>

>

Soit une liste triée L.

Ecrire un algorithme permettant d'insérer un élément n au bon endroit dans la liste triée L (par exemple, si L:=[1,4,12] et n:=7, on doit insérer n en 3ème position).

> L:=[1,4,12,127,436];

[Maple Math]

> var:=readstat("entrez un élément ");
#on va étudier d'abord les cas "limites", i.e. qui ne setraitent pas dans le cas général: Si la liste est vide [], si on doit insérer en premier ou en dernier.
if L=[] then L:=[var];
elif var < L[1] then
L:=[var,op(L)];
elif var > L[nops(L)] then
L:=[op(L),var];
else #cas general, on insère dans une position à l'intérieur de la liste
i:=1;
while var > L[i] do
i:=i+1;
od;
L:=[op(L[1..i-1]),var,op(L[i..nops(L)])];
fi;

>

entrez un élément 45;

[Maple Math]

[Maple Math]

[Maple Math]

>

Soit une liste L quelconque.

--Ecrire un algorithme permettant de retirer toutes les occurences d'un élément var(entré au clavier) dans la liste L.

> L:=[4,5,4,4,7,2];

[Maple Math]

> var:=readstat("entrez un élément");
i:=1;
while i<=nops(L) do
if L[i]=var then
L:=subsop(i=NULL,L);
else
i:=i+1;
fi;
od;
print(L):

entrez un élément 4;

[Maple Math]

[Maple Math]

[Maple Math]

> #autre solution:
L:=[4,5,4,4,7,2];
var:=readstat("entrez un élément");

for i from nops(L) to 1 by -1 do
L:=`if`(L[i]=var,subsop(i=NULL,L),L);
od;
print(L);

>

[Maple Math]

entrez un élément 4;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

> # rappel: la boucle for dans l'autre sens (1 à nops) ne marche pas.

> #autre solution: utiliser member
L:=[4,5,4,4,7,2];
var:=readstat("entrez un élément");

while member(var, L, 'pos') do
L:=subsop(pos=NULL,L);
od;
print(L);

[Maple Math]

entrez un élément 4;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

>

>

--Même exercice, mais pour une liste de liste.

> #on utilise la même boucle que précédemment (n'importe laquelle des solutions) pour chacune des listes contenues dans la liste de listes.
LL:=[[4,3,5,4,4,3],[5,4,6],[1,4,76,234]];
var:=readstat("entrez un élément");

for j from 1 to nops(LL) do
i:=1:
while i<=nops(LL[j]) do
if LL[j][i]=var then
LL[j]:=subsop(i=NULL,LL[j]);
else
i:=i+1;
fi;
od:
od:
print(LL):

>

[Maple Math]

entrez un élément 4;

[Maple Math]

[Maple Math]

>

On considère des dépense effectuées dans différents postes
budgétaires. A chaque dépense est associée le nom du fournisseur, sous
forme de liste, par exemple [``Dupont'', 877]. Nous considérons alors
la liste de ces dépenses, donc une liste de listes LL de deux
éléments. Un même fournisseur pourra apparaître plusieurs fois.

Par exemple: [["Dupont", 87],["Ets Moulin", 233],["Martin", 877],["Durand", 82],["Dupont", 4269],["Dupont", 321],["Martin", 921]]

Donner l'algorithme permettant de construire la liste récapitulative
contenant les dépenses totales faites auprès de chaque fournisseur, et
de l'afficher.
Dans l'exemple, cela doit donner:[["Dupont", 4677],["Ets Moulin", 233],["Martin", 1798],["Durand", 82]]

> #indice: créer une seconde liste récapitulative que l'on remplit au fur et à mesure du parcours de LL.
Il s'agit de vérifier si on possède déjà dans la liste récapitulative le fournisseur. Si non, on le rajoute dans la liste, si oui on ajoute juste la dépense à la somme déjà calculée.

>

>