blob: f44525f17043f548778816c7c0438534c71b1ab0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
%%%
% Rangement des nombres
%%%
\setKVdefault[ClesRgt]{Croissant,Decroissant=false,Strict,Fraction=false,Details=false}
\dtlexpandnewvalue%
\DTLgnewdb{mtnumedb}%
\DTLgnewdb{mtRGTdb}% Pb de doublon avec mtdb de Mediane
\newcommand\Rangement[2][]{%
\useKVdefault[ClesRgt]%
\setKV[ClesRgt]{#1}%
\ifboolKV[ClesRgt]{Fraction}{%
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeRgt{#2}%
% on cherche le d\'enominateur commun
\ppcm=1\relax
\foreachitem\x\in\ListeRgt{%
\PPCM{\fpeval{\ListeRgt[\xcnt,2]}}{\fpeval{\the\ppcm}}%
}%
% On cr\'ee la liste des rangements.
\DTLcleardb{mtnumedb}%
% % on les trie pour les ranger par ordre croissant
\foreachitem\x\in\ListeRgt{%
\DTLnewrow{mtnumedb}%
\xdef\toto{\fpeval{\ListeRgt[\xcnt,1]*\the\ppcm/\ListeRgt[\xcnt,2]}}%
\DTLnewdbentry{mtnumedb}{numeric}{\toto}%
}%
% % On trie
\ifboolKV[ClesRgt]{Decroissant}{%
% % On trie la liste
\dtlsort{numeric=descending}{mtnumedb}{\dtlicompare}%
\ifboolKV[ClesRgt]{Details}{\ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=numeric}{\frac{\num{\numeroDonnee}}{\num{\the\ppcm}}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{>}{\geqslant}}}}}{%
\ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=numeric}{\Simplification{\numeroDonnee}{\ppcm}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{>}{\geqslant}}}}%
}
}{%
% % On trie la liste
\dtlsort{numeric}{mtnumedb}{\dtlicompare}%
\ifboolKV[ClesRgt]{Details}{%
\ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=numeric}{\frac{\num{\numeroDonnee}}{\num{\the\ppcm}}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{<}{\leqslant}}}}%
}{%
\ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=numeric}{\Simplification{\numeroDonnee}{\ppcm}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{<}{\leqslant}}}}%
}%
}%
}{%
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeRgt{#2}%
% on cr\'ee la base de donn\'ees des valeurs
\DTLcleardb{mtRGTdb}%
% % on les trie pour les ranger par ordre croissant
\foreachitem\x\in\ListeRgt{%
\DTLnewrow{mtRGTdb}%
\itemtomacro\ListeRgt[\xcnt]\y%
\DTLnewdbentry{mtRGTdb}{numeric}{\y}%
}%
% %
\ifboolKV[ClesRgt]{Decroissant}{%
% On trie la liste
\dtlsort{numeric=descending}{mtRGTdb}{\dtlicompare}%
\ensuremath{\DTLforeach{mtRGTdb}{\numeroDonnee=numeric}{\num{\numeroDonnee}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{>}{\geqslant}}}}%
}{%
% % On trie la liste
\dtlsort{numeric}{mtRGTdb}{\dtlicompare}%
\ensuremath{\DTLforeach{mtRGTdb}{\numeroDonnee=numeric}{\num{\numeroDonnee}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{<}{\leqslant}}}}%
}%
}%
}%
|