// Affiche le nom des pays qui vont affronter le pays passé en paramètre private static void AfficherAdversairePays(List <Pays> listePays, string pays) { Pays achercher; int pos; char groupe; // On récupère le groupe du pays concerné achercher = new Pays(' ', ' ', pays, "", 0, 0); pos = listePays.BinarySearch(achercher); if (pos < 0) { Console.WriteLine("Le pays '{0}' n'est pas dans la liste!", pays); return; } groupe = listePays.ElementAt(pos).Groupe; // On liste les pays qui vont l'affronter Console.WriteLine("Le pays '{0}' va affronter les pays suivants : \n", pays); Pays.codeEquals = Pays.EnumCodeEquals.Groupe; achercher = new Pays(groupe, ' ', "", "", 0, 0); pos = 0; while ((pos = listePays.IndexOf(achercher, pos)) >= 0) { // On ignore le pays traité if (listePays.ElementAt(pos).Nom.ToUpper() != pays.ToUpper()) { Console.WriteLine("\t- {0}", listePays.ElementAt(pos).Nom); } pos++; } }
// Recherche et affiche le nom du pays ayant la plus petite population private static void AfficherPaysMoinsPeuple(List <Pays> listePays) { // On recherche la plus petite valeur int moinsPeuple = listePays.Min(t => t.Population); // On récupère l'index de ce pays Pays.codeEquals = Pays.EnumCodeEquals.Population; Pays aChercher = new Pays(' ', ' ', "", "", 0, moinsPeuple); int pos = listePays.IndexOf(aChercher); Console.WriteLine(" - Le pays le moins peuplé est : {0}", listePays.ElementAt(pos).Nom); }
// Recherche et affiche le nom du pays ayant la plus petite superficie private static void AfficherPaysMoinsSuperficie(List <Pays> listePays) { // On recherche la plus petite valeur int moinsSuperficie = listePays.Min(t => t.Superficie); // On récupère l'index de ce pays Pays.codeEquals = Pays.EnumCodeEquals.Superficie; Pays aChercher = new Pays(' ', ' ', "", "", moinsSuperficie, 0); int pos = listePays.IndexOf(aChercher); Console.WriteLine(" - Le pays ayant la plus petite superficie est : {0}", listePays.ElementAt(pos).Nom); }
// Affiche les données des pays passés en paramètre private static void AfficherDetailPays(List <Pays> listePays, List <string> listeToDisplay) { foreach (var pays in listeToDisplay) { Pays aChercher = new Pays(' ', ' ', pays.ToUpper(), "", 0, 0); int pos = listePays.BinarySearch(aChercher); if (pos >= 0) { Console.WriteLine(" - {0}", listePays.ElementAt(pos).ToString()); } else { Console.WriteLine(" - Le pays '{0}' n'est pas dans la liste.", pays.ToUpper()); } } }
// Supprime les pays passés en paramètre private static void SupprimerPays(List <Pays> listePays, List <string> listeToDelete) { string msg = ""; foreach (var pays in listeToDelete) { Pays aChercher = new Pays(' ', ' ', pays, "", 0, 0); int pos = listePays.IndexOf(aChercher); // On supprime toute les instances du pays while ((pos = listePays.IndexOf(aChercher)) >= 0) { listePays.RemoveAt(pos); msg += pays + " "; } } Console.WriteLine(" - Les pays suivants ont été supprimés : {0}", msg); }
// Point d'entré du programme static void Main(string[] args) { const string fileName = "WorldCup_2018.txt"; List <Pays> listePays = new List <Pays>(); // 1. Lire le fichier des données WorldCup_2018.txt et créer une liste; AfficheTitre("1. Lire le fichier des données WorldCup_2018.txt et créer une liste :"); listePays = LireFichier(fileName); Console.WriteLine(""); // 2. Afficher les 6 premiers et les 4 derniers pays de la liste; AfficheTitre("2. Afficher les 6 premiers et les 4 derniers pays de la liste :"); AfficherListe(listePays, 6, 4); Console.WriteLine(""); // 3a. Modifier le groupe du premier pays ‘A’ au lieu de ‘Z’ AfficheTitre("3a. Modifier le groupe du premier pays ‘A’ au lieu de ‘Z’ :"); ModifierGroupePosition(listePays, 0, 'A'); Console.WriteLine(""); // 3b. Modifier la superficie du dernier pays : 449964 km2 au lieu de 944964 km2 AfficheTitre("3b. Modifier la superficie du dernier pays : 449964 km2 au lieu de 944964 km2 :"); ModifierSuperficiePosition(listePays, listePays.Count - 1, 449964); Console.WriteLine(""); // 4. Supprimer les deux pays qui ne sont pas qualifiés pour cette coupe : ITALIE et SUISSE AfficheTitre("4. Supprimer les deux pays qui ne sont pas qualifiés pour cette coupe :"); List <string> paysToDelete = new List <string> { "ITALIE", "SUISSE" }; SupprimerPays(listePays, paysToDelete); Console.WriteLine(""); // 5. Ajouter la France à la liste : C, 5, FRANCE, PARIS, 543964, 61387038 AfficheTitre("5. Ajouter la France à la liste :"); Pays france = new Pays('C', '5', "FRANCE", "PARIS", 543964, 61387038); AjouterPays(listePays, france); Console.WriteLine(""); // 6a. Déterminer et afficher le continent ayant plus de pays participants; AfficheTitre("6a. Déterminer et afficher le continent ayant plus de pays participants :"); AfficherContinentPlusPays(listePays); Console.WriteLine(""); // 6b. Déterminer et afficher le continent ayant le moins de pays participants; AfficheTitre("6b. Déterminer et afficher le continent ayant le moins de pays participants :"); AfficherContinentMoinsPays(listePays); Console.WriteLine(""); // 6c. Déterminer et afficher le pays le moins peuplé en population AfficheTitre("6c. Déterminer et afficher le pays le moins peuplé en population :"); AfficherPaysMoinsPeuple(listePays); Console.WriteLine(""); // 6d. Déterminer et afficher le pays le plus petit en superficie AfficheTitre("6d. Déterminer et afficher le pays le plus petit en superficie :"); AfficherPaysMoinsSuperficie(listePays); Console.WriteLine(""); // 7. Trier la liste selon les noms des pays en utilisant la méthode Sort; AfficheTitre("7. Trier la liste selon les noms des pays en utilisant la méthode Sort :"); TrierListeParPays(listePays); Console.WriteLine(""); // 8. Afficher les 6 premiers et les 4 derniers pays de la liste après le tri AfficheTitre("8. Afficher les 6 premiers et les 4 derniers pays de la liste après le tri :"); AfficherListe(listePays, 6, 4, "après le tri"); Console.WriteLine(""); // 9. Faire la recherche des pays suivants dans la liste : Japon, Canada et Italie AfficheTitre("9. Faire la recherche des pays suivants dans la liste : Japon, Canada et Italie :"); List <string> cherchePays = new List <string> { "Japon", "Canada", "Italie" }; AfficherDetailPays(listePays, cherchePays); Console.WriteLine(""); // 10. Déterminer et afficher les pays que le Bresil les affrontera au 1er tour (ceux du même groupe que le Brésil) AfficheTitre("10. Déterminer et afficher les pays que le Bresil affrontera au 1er tour :"); AfficherAdversairePays(listePays, "Bresil"); Console.WriteLine(""); }
// Ajout d'un pays à la liste private static void AjouterPays(List <Pays> listePays, Pays pays) { listePays.Add(pays); Console.WriteLine(" - Le pays suivant à été ajouté :\n\t{0}", pays.ToString()); }