diff --git a/tri.js b/tri.js index 366febe..001d972 100644 --- a/tri.js +++ b/tri.js @@ -240,3 +240,384 @@ afficher("Tri par resp croissant :", tab_resp); tab_resp = trierResp(tresp, tnoms, tnumeros, false); afficher("Tri par resp décroissant :", tab_resp); + +// ------------------------------------------------------------------------ +// 1. première ville vide et dernière ville vide +// ==> comparer numéro premier et numéro dernier, inverser si besoin +// 2. première ville vide et dernière ville non vide +// décroissant : inverser si besoin +// 3. première ville non vide et dernière ville vide +// croissant : inverser si besoin +// 4. première ville non vide et dernière ville non vide +// 4.1 première ville < dernière ville : croissant, inverser si besoin +// 4.2 première ville > dernière ville : décroissant, inverser si besoin +// 4.3 première ville = dernière ville +// ==> comparer numéro premier et numéro dernier, inverser si besoin +// ------------------------------------------------------------------------ + +if (${premiere_ville} == "" && ${derniere_ville} == "") +{ + if (${numero_premier} > ${numero_dernier}) + { + // décroissant : inverser si besoin + } else { + // croissant : inverser si besoin + } +} +else if (${premiere_ville} == "" && ${derniere_ville} != "") +{ + // décroissant : inverser si besoin +} +else if (${premiere_ville} != "" && ${derniere_ville} == "") +{ + // croissant : inverser si besoin +} +else if (${premiere_ville} != "" && && ${derniere_ville} != "") +{ + if (${premiere_ville}.localeCompare(${derniere_ville}) < 0) + { + // croissant : inverser si besoin + } else if (${premiere_ville}.localeCompare(${derniere_ville}) > 0) + { + // décroissant : inverser si besoin + } else { + if (${numero_premier} > ${numero_dernier}) + { + // décroissant : inverser si besoin + } else { + // croissant : inverser si besoin + } + } +} + +// simplification ordre croissant +if (${premiere_ville} == "" && ${derniere_ville} == "" + && + ${numero_premier} > ${numero_dernier}) +{ + // décroissant : inverser +} +else if (${premiere_ville} == "" && ${derniere_ville} != "") +{ + // décroissant : inverser +} +else if (${premiere_ville} != "" && && ${derniere_ville} != "") +{ + if (${premiere_ville}.localeCompare(${derniere_ville}) > 0 + || + (${premiere_ville}.localeCompare(${derniere_ville}) == 0 + && + ${numero_premier} > ${numero_dernier})) + { + // décroissant : inverser + } +} + + +// simplification ordre décroissant +if (${premiere_ville} == "" && ${derniere_ville} == "" + && + ${numero_premier} < ${numero_dernier}) +{ + // croissant : inverser +} +else if (${premiere_ville} != "" && ${derniere_ville} == "") +{ + // croissant : inverser +} +else if (${premiere_ville} != "" && && ${derniere_ville} != "") +{ + if (${premiere_ville}.localeCompare(${derniere_ville}) < 0 + || + (${premiere_ville}.localeCompare(${derniere_ville}) == 0 + && + ${numero_premier} < ${numero_dernier})) + { + // croissant : inverser + } +} + + +// ------------------------------------------------------------------------ +// contrôler si les membres sont triés par ordre (dé)croissant du nom du parent +// +// 1) au moins 2 parents non vides (donc forcément les deux premiers) +// - parent1 < parent2 => croissant +// - parent1 > parent2 => décroissant +// - parent1 = parent2 +// - membre1 < membre2 => croissant +// - membre1 > membre2 => décroissant +// - membre1 = membre2 +// - numéro1 < numéro 2 => croissant +// - numéro1 > numéro 2 => décroissant +// 2) un seul parent non vide (donc le premier) +// - membre2 < membre3 => croissant +// - membre2 > membre3 => décroissant +// - membre2 = membre3 +// - numéro2 < numéro 3 => croissant +// - numéro2 > numéro 3 => décroissant + +if (${nb_parents} >= 2) +{ + if (${parent1}.localeCompare(${parent2}) < 0) + { + // croissant + } + else if (${parent1}.localeCompare(${parent2}) > 0) + { + // décroissant + } + else if (${membre1}.localeCompare(${membre2}) < 0) + { + // croissant + } + else if (${membre1}.localeCompare(${membre2}) > 0) + { + // décroissant + } + else if (${numero1} < ${numero2}) + { + // croissant + } + else //if (${numero1} > ${numero2}) + { + // décroissant + } +} +// un seul parent +else if (${nb_total_membres} > 2) +{ + if (${membre2}.localeCompare(${membre3}) < 0) + { + // croissant + } + else if (${membre2}.localeCompare(${membre3}) > 0) + { + // décroissant + } + else if (${numero2} < ${numero3}) + { + // croissant + } + else //if (${numero2} > ${numero3}) + { + // décroissant + } +} + +// simplification ordre croissant +if (${nb_parents}) >= 2) +{ + if ((${parent1}.localeCompare(${parent2}) > 0) + || + (${parent1}.localeCompare(${parent2}) == 0 + && ${membre1}.localeCompare(${membre2}) > 0) + || + (${parent1}.localeCompare(${parent2}) == 0 + && ${membre1}.localeCompare(${membre2}) == 0 + && ${numero1} > ${numero2})) + { + // décroissant => inverser + } +} +// un seul parent +else if (${nb_total_membres} > 2) +{ + if ((${membre2}.localeCompare(${membre3}) > 0) + || + (${membre2}.localeCompare(${membre3}) == 0 + && ${numero2} > ${numero3})) + { + // décroissant => inverser + } +} + +// simplification ordre décroissant +if (${nb_parents}) >= 2) +{ + if ((${parent1}.localeCompare(${parent2}) < 0) + || + (${parent1}.localeCompare(${parent2}) == 0 + && ${membre1}.localeCompare(${membre2}) < 0) + || + (${parent1}.localeCompare(${parent2}) == 0 + && ${membre1}.localeCompare(${membre2}) == 0 + && ${numero1} < ${numero2})) + { + // croissant => inverser + } +} +// un seul parent +else if (${nb_total_membres} > 2) +{ + if ((${membre2}.localeCompare(${membre3}) < 0) + || + (${membre2}.localeCompare(${membre3}) == 0 + && ${numero2} < ${numero3})) + { + // croissant => inverser + } +} + +// ------------------------------------------------------------------------ +// contrôler si les membres sont triés par ordre (dé)croissant de la colonne responsable +// colonne responsable non vide en tête +// +// 1) au moins 2 oui dans la colonne responsable (donc forcément les deux premiers) +// - membre1 < membre2 => croissant +// - membre1 > membre2 => décroissant +// - membre1 = membre2 +// - numéro1 < numéro 2 => croissant +// - numéro1 > numéro 2 => décroissant +// 2) un seul oui dans la colonne responsable (donc le premier) +// - numéro2 < numéro 3 => croissant +// - numéro2 > numéro 3 => décroissant + +if (${nb_resp} >= 2) +{ + if (${membre1}.localeCompare(${membre2}) < 0) + { + // croissant + } + else if (${membre1}.localeCompare(${membre2}) > 0) + { + // décroissant + } + else if (${numero1} < ${numero2}) + { + // croissant + } + else //if (${numero1} > ${numero2}) + { + // décroissant + } +} +// un seul responsable +else if (${nb_total_membres} > 2) +{ + if (${membre2}.localeCompare(${membre3}) < 0) + { + // croissant + } + else if (${membre2}.localeCompare(${membre3}) > 0) + { + // décroissant + } + else if (${numero2} < ${numero3}) + { + // croissant + } + else //if (${numero2} > ${numero3}) + { + // décroissant + } +} + +// simplification ordre croissant +if (${nb_resp}) >= 2) +{ + if (${membre1}.localeCompare(${membre2}) > 0 + || + (${membre1}.localeCompare(${membre2}) == 0 + && ${numero1} > ${numero2})) + { + // décroissant => inverser + } +} +// un seul responsable +else if (${nb_total_membres} > 2) +{ + if (${membre2}.localeCompare(${membre3}) > 0 + || + (${membre2}.localeCompare(${membre3}) == 0 + && ${numero2} > ${numero3})) + { + // décroissant => inverser + } +} + +// simplification ordre décroissant +if (${nb_resp}) >= 2) +{ + if (${membre1}.localeCompare(${membre2}) < 0 + || + (${membre1}.localeCompare(${membre2}) == 0 + && ${numero1} < ${numero2})) + { + // croissant => inverser + } +} +// un seul responsable +else if (${nb_total_membres} > 2) +{ + if (${membre2}.localeCompare(${membre3}) < 0 + || + (${membre2}.localeCompare(${membre3}) == 0 + && ${numero2} < ${numero3})) + { + // croissant => inverser + } +} + +let numeros = [ 8, 5, 9, 2, 3, 6, 7, 4, 1 ]; + +let noms = [ "Yopduu Cxùbvnn", "Xeosnm Rixwxé", "Vonôdjz Jcpùuèf", "Tnczgèb Ùttypmt", + "Sdcrdi Vzùmbim", "Kgazmà Éurbdv", "Izgzwùz Evjsqjeù","Hmupazn Chrédki", + "Lambert Paul" ]; + +let parents = [ "Lambert Paul", "Lambert Paul", "Lambert Paul", "Lambert Paul", + "Lambert Paul", "Lambert Paul", "Lambert Paul", "Lambert Paul", "" ]; + +function inverser(numeros, noms, parents) +{ + for (let i = 0; i < numeros.length; ++i) { + if (parents[i] != "") { + premier = i; + break; + } + } + for (let i = numeros.length - 1; i >= 0; --i) { + if (parents[i] != "") { + dernier = i; + break; + } + } + console.log("premier : ", numeros[premier], noms[premier], parents[premier]); + console.log("dernier : ", numeros[dernier], noms[dernier], parents[dernier]); + + if (parents[premier].localeCompare(parents[dernier]) < 0) + { + console.log(parents[premier], "<", parents[dernier]); + } + if (parents[premier].localeCompare(parents[dernier]) == 0 && + noms[premier].localeCompare(noms[dernier]) < 0) + { + console.log(parents[premier], "=", parents[dernier]); + console.log(noms[premier], "<", noms[dernier]); + } + if (parents[premier].localeCompare(parents[dernier]) == 0 && + noms[premier].localeCompare(noms[dernier]) == 0 && + numeros[premier] < numeros[dernier]) + { + console.log(parents[premier], "=", parents[dernier]); + console.log(noms[premier], "=", noms[dernier]); + console.log(numeros[premier], "<", numeros[dernier]); + } + + if (parents[premier].localeCompare(parents[dernier]) < 0 + || + (parents[premier].localeCompare(parents[dernier]) == 0 && + noms[premier].localeCompare(noms[dernier]) < 0) + || + (parents[premier].localeCompare(parents[dernier]) == 0 && + noms[premier].localeCompare(noms[dernier]) == 0 && + numeros[premier] < numeros[dernier])) + { + console.log("Inverser le tri"); + } + else { + console.log("Tri ok"); + } +} +inverser(numeros, noms, parents); +