// Lit le fichier passé en paramètre, rempli le tableau avec les données lues et compte le nombre de personnes private static void LireFichier(string nomFichier, Personne[] tab, out int nb) { nb = 0; StreamReader sr = File.OpenText(nomFichier); string ligne = ""; // On parcours le fichier while ((ligne = sr.ReadLine()) != null) { string nom = ligne.Substring(0, 30).Trim(); char sexe = ligne.Substring(30, 1)[0]; double taille = Double.Parse(ligne.Substring(31, 10)); double poids = Double.Parse(ligne.Substring(42, 15)); int numero = int.Parse(ligne.Substring(57)); tab[nb++] = new Personne(nom, sexe, taille, poids, numero); } sr.Close(); Console.WriteLine("Fin de la lecture du fichier {0}. Il contient {1} personnes.", nomFichier, nb); }
// Ajoute une personne dans le tableau private static void InsererPersonne(Personne[] pers, Personne nouvellePersonne, ref int nbPers) { int index = -1; // On s'assure qu'il y a de place dans le tableau if (nbPers < pers.Length) { // On recherche où insérer le numéro index = CherchePositionNumero(pers, nouvellePersonne.Numero); } // Si index est positif, c'est qu'il y a de la place if (index >= 0) { Console.WriteLine("Insertion à l'index {0} de : \n{1}", index, nouvellePersonne); Tools.InsererLigneDansTableau(pers, nouvellePersonne, index); nbPers++; // On n'oubli pas d'incérmenter le nombre de personne } else { Console.WriteLine("Impossible d'insérer une nouvelle personne, il n'y a plude de place dans le tableau."); } }
// Point d'entré du programme static void Main(string[] args) { string nomFichier = "met_cs_h18.txt"; const int maxPers = 30; Personne[] pers = new Personne[maxPers]; // 1. Lire le fichier, de remplir le tableau pers (tableau d’objets de la classe Personne) et de compter puis de transmettre par sortie le nombre de personnes lues; AfficheTitre("1. Lire le fichier, remplir pers[] et compter le nombre de personnes :"); LireFichier(nomFichier, pers, out int nbPers); // 2. Afficher le contenu du tableau pers en utilisant la redéfinition de ToString; AfficheTitre("2. Afficher le contenu du tableau pers en utilisant la redéfinition de ToString :"); AfficherContenuTableau(pers); Console.WriteLine(""); // 3. Chercher puis modifier le sexe de la personne ayant le numéro 2325 (sexe féminin au lieu de masculin) AfficheTitre("3. Chercher puis modifier le sexe de la personne 2325 :"); ModifierSexe(pers, 2325, 'F'); /* 4. Chercher séquentiellement et afficher les résultats de la recherche de: * Coutu Pierre, Robitaille Suzanne et Gagnon Daniel * On affiche toutes les personnes trouvées s’il y en a plusieurs;*/ AfficheTitre("4. Chercher séquentiellement et afficher les résultats de la recherche :"); string[] chercherPers = { "Coutu Pierre", "Robitaille Suzanne", "Gagnon Daniel" }; RechercherSeqAffiche(chercherPers, pers); Console.WriteLine(""); // 5. Trier le tableau pers (avec QuickSort) selon les numéros des personnes; AfficheTitre("5. Tri du tableau pers (avec QuickSort) selon les numéros des personnes :"); TriAvecQuickSort(pers, nbPers); // 6. Afficher le contenu du tableau pers qui vient d’être trié; AfficheTitre("6. Affichage du tableau trié :"); AfficherContenuTableau(pers); Console.WriteLine(""); // 7. Chercher avec la recherche dichotomique et afficher les résultats de la recherche des personnes ayant des numéros suivants: 4612, 4371, 2325 et 9876 AfficheTitre("7. Chercher avec la recherche dichotomique et afficher les résultats :"); int[] chercherNumero = { 4612, 4371, 2325, 9876 }; RechercheDichoAffiche("", chercherNumero, pers, nbPers); // 8. Supprimer la personne ayant le numéro 4371 AfficheTitre(" 8. Supprimer la personne ayant le numéro 4371 :"); SupprimerPersonne(4371, pers, ref nbPers); Console.WriteLine(""); // 9. Ajouter 4 cm à la taille de la personne ayant le numéro 2636 AfficheTitre("9. Ajouter 4 cm à la taille de la personne ayant le numéro 2636 :"); ModifierTaille(2636, 4, pers, nbPers); Console.WriteLine(""); /* 10. Insérer la personne suivante: * Gosselin Laurent, sexe masculin, taille 1.68 mètre, 72.1 kg, numéro 3430 * en conservant l’ordre trié des numéros du tableau. On réaffiche le contenu du tableau.*/ AfficheTitre("10-1. Insérer une personne :"); Personne nouvellePersonne = new Personne("Gosselin Laurent", 'M', 1.68, 72.1, 3430); InsererPersonne(pers, nouvellePersonne, ref nbPers); AfficheTitre("10-2. Contenu du tableau après insertion :"); AfficherContenuTableau(pers); Console.WriteLine(""); }