c#: Correction des exercices tableaux et matrices 13
c#: Correction des exercices tableaux et matrices 13
- Enoncé Exercice 13
- Buts:
- Cet exercice a pour but de vérifier les points techniques suivants :
- Déclaration et initialisation de tableaux en c#.
- Affichage des éléments du tableau
- Parcourir des tableaux en c#.
- Fusionner deux tables en une seule.
- Rappel
- Copie d’un tableau
- La copie d’un tableau implique la copie de ses éléments dans un autre tableau.
- Dans le cas d’un tableau d’objets, seules les références à ces objets sont copiées, aucun nouvel objet n’est créé.
- La méthode arraycopy de la classe System permet de copier tout ou partie d’un tableau vers un autre tableau déjà alloué.
- Explications
- Cette version implante une solution non optimisée où 2 tableaux auxiliaires sont utilisés pour héberger temporairement les valeurs paires pour le premier et les valeurs impaires pour le second.
- Ces deux tableaux sont dimensionnés à la valeur maximale possible : la taille de tableau principal.
- Une fois qu’ils contiennent toutes les valeurs de tableau, ces deux tableaux sont fusionnés par recopie dans le tableau tableau.
- Cette solution n’est pas optimisée
- Dans l’exercice suivant le programme copie le contenu du tableau en employant une boucle for, quoiqu’il ait pu tout simplement utiliser la méthode Copy de la classe Array, comme suit:
- Correction Exercice 13
Array.Copy(Valeurs, 0,Temp,0 Valeurs.Lenth)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace exercice_13 { class Program { static int[] tableau = new int[20]; static void Main(string[] args) { remplirTableau(); AffichageTab(); ReorganiseTab(); } static void remplirTableau() { Random rnd = new Random(); // affectation de valeurs entières, pris au hasard entre 1 et 100, au tableau for (int i = 0; i < 20; i++) { tableau[i] = rnd.Next(1, 101); } } static void AffichageTab() { //affichage des valeurs du tableau for (int i = 0; i < 20; i++) { Console.WriteLine(tableau[i] + " "); } } static void ReorganiseTab() { //déclaration de deux tableaux temporaires int [] tabpair=new int[20]; int[] tabimpair = new int[20]; //déclaration de deux compteurs int ctpair=0; int ctimpair=0; //Recherche de minimum for (int i = 0; i < 20; i++) { if ((tableau[i] % 2) == 0) { //int[] tabpair; tabpair[ctpair] = tableau[i]; ctpair++; } else { tabimpair[ctimpair] = tableau[i]; ctimpair++; } } for (int i = 0; i < ctpair; i++) { tableau[i] = tabpair[i]; } for (int i = 0; i < ctimpair; i++) { tableau[i+ ctpair] = tabimpair[i]; } Console.WriteLine("Tableau réorganisé"); Console.WriteLine("---------------------"); Console.WriteLine("Les entiers pairs"); for (int i = 0; i < 20; i++) { if(i== ctpair) { Console.WriteLine("Les entiers impairs"); } Console.WriteLine(tableau[i]); } Console.WriteLine("---------------------"); Console.WriteLine("Nombre des entiers pairs: "+ctpair); Console.WriteLine("Nombre des entiers impairs: " + ctimpair); } } }