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);
}
}
}
