logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Passer de l'algo au c#

  • Objet : Enregistrements/listes énumérées
  • Niveau requis :
  • Commentaires : Contexte d'utilisation du sujet du tuto.

Introduction

L'algorithme a implémenter :

Structurer des données associées à des pièces.
 
Constantes
// Dimension des tableaux
MAX_TAB_IdPièce = 10
MAX_TAB_IdNoSérie = 10
MAX_TAB-PIECE = 100000
 
Types 
// Types énumérés
TE_FormePièce = (sphère, cube, cylindre)
TE_Couleur = (jaune, vert, bleu, rouge, orange, mauve)
TE_NomJour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
 
// Types tableaux
TabIdPièce = Tableau [MAX_TAB_IdPièce] de Caractères	  // Tableau pour identifiant pièce
TabIdNoSérie = Tableau [MAX_TAB_IdNoSérie] de Caractères  // Tableau pour numéro de série de fabrication
TabPièce = Tableau [MAX_TAB_PIECE] de EnregPièce	  // Tableau pour stocker les descriptions de pièces fabriquées
 
// Type structures
EnregPièce = Enregistrement
			Id : TabIdPièce		// Identifiant de la pièce
			Couleur : TE_Couleur	// Couleur de la pièce
			NoSérie : TabIdNoSérie	// Numéro de série de fabrication
			DateFab : EnregDate 	// Date de fabrication
			Dim : Mesures
			FinEnregistrement
 
EnregDate = Enregistrement
			NomJour : TE_NomJour
			Jour : Entier		
			Mois : Entier
			Année : Entier
			FinEnregistrement
 
Mesures = 	Enregistrement			// structure de dimensions d'un cylindre
			Forme : TE_FormePièce 
			Rayon : Entier			// rayon (sphère ou cylindre)
			Hauteur : Entier		// hauteur (du cube ou du cylindre)
			FinEnregistrement				
 
Variables
ProductionPièces : TabPièce

Implémentation

J'ai commencé par la création des types

namespace PiècesUsine
{
    public struct EnregPièce    // Déclaration d'une structure de stockage d'un descriptif de pièce
    {
        public string Id;            // Identifiant de la pièce
        public int numeroSerie;      // numéro de série des pièces
        public couleur couleurPièce; // Voir liste énumérée 'couleur'
        public date DateFab;         // Voir structure 'date' utilisant deux listes énumérée, 
                                     // 'jourSemaine' et 'moisAnnée'
        public mesure dimension;     // Voir structure 'mesure' utilisant la liste énumérée 'forme'
    }
 
    public enum couleur { Jaune, Vert, Bleu, Rouge, Orange, Mauve };
 
    public struct date
    {
        public jourSemaine NomJour;  // Voir Liste énumérée 'jourSemaine'
        public moisAnnée Mois;       // Voir Liste énumérée 'moisAnnée'
        public int jourChiffre;      // le numéro du jour
        public int Annee;            // numéro de l'année
    }
    public enum jourSemaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche };
    public enum moisAnnée { Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, 
                            Septembre, Octobre, Novembre, Décembre };
 
    public struct mesure   // tout ce qui constitue les mesures des pièces
    {
        public forme forme;         // forme des pièces
        public double rayon;        // rayon pour les pièces cylindriques et sphériques
        public double cote;         // côté pour les pièces cubiques
        public double hauteur;      // hauteur pour les pièces cylindriques
    }
    public enum forme { Cubique, Cylindrique, Sphérique };
 
    class Program
    {
        public const int taille = 1000;
        static void Main(string[] args)
 
        {
            int indice;
            EnregPièce[] Tableaupiece;
 
            EnginDePieces.RemplirTableauPiece(out Tableaupiece, out indice);
 
            EnginDePieces.AfficherTableauPiece(Tableaupiece, indice);
 
 
            Console.ReadLine();
            Console.WriteLine();
        }
 
    }
}

Puis j'ai créé une classe : "EnginDePieces"

Où j'ai rédigé le programme des procédures :

  • RemplirTableauPiece
  • AfficherTableauPiece

Programme de la fonction RemplirTableauPiece

On crée un tableau de type “EnregPièce”.
Qu'est-ce que le type “EnregPièce” ?

En c# on peut créer des types utilisateurs. Cela correspond au enregistrement en algo.
C'est un type qui définit une structure de donnée composée de type prédéfini (int ; char; string …) ou composé d'autres de types créés par l'utilisateur (liste énuméré enum , sous structure struct)

        public static void RemplirTableauPiece(out EnregPièce[] piece_tableau, out int indi)
        {
            piece_tableau = new EnregPièce[MAX_TAB_PIECE];
 
            indi = 0;
 
            do
            {
                piece_tableau[indi] = SaisirPièce(ref piece_tableau[indi]);
                indi++;
 
            } while (veutContinuer());
        }
Loupe sur la fonction : RemplirTableauPiece

La fonction RemplirTableauPiece renverra en sortie (out):

  • un tableau nommé piece_tableau ;
  • un entier (int) nommé indi;

Pour remplir toutes les cases du tableau de pièce qui contiendra les informations choisies par l'utilisateur, on affecte les cases du tableau piece_tableau au moyen d'une fonction nommée : SaisirPièce.

Loupe sur l'appel de fonction : SaisirPièce

Elle prend en entrée/sortie (ref) le tableau piece_tableau afin de pouvoir en modifier chaque variable.
Le tableau piece_tableau étant de type EnregPièce,
il devra “suivre” la structure de ce type créé par l'utilisateur. C'est-à-dire être “composée”:

  • d'une variable effective Id de type chaine, string;
  • d'une variable effective numeroSerie de type entier, int;
  • d'une variable effective couleurPièce de type couleur : c'est là une liste énumérée (comme ça contrôle sur ce que rentre l'utilisateur ; sûr que la couleur est dans les stocks, et pas d'erreur de frappe à la saisie).
  • et d'une variable effective ayant pour valeur une date de type date; ce type est à créer, ce sera une structure.

La fonction veutContinuer sert à demander à l'utilisateur s'il souhaite remplir des informations sur une autre pièce.
Pour son code qui n'a pas de rapport avec l'implémentation de l'algo voir l'annexe.

Programme de la fonction SaisirPièce

Plusieurs erreurs à analyser

L'analyse et une correction possible en note plus bas.

internal static EnregPièce SaisirPièce(ref EnregPièce unepiece)
{
   // Déclarations
   EnregPièce pièceSaisie = new EnregPièce(); // initialisation de la structure pièceSaisie
 
   // Titre
   Console.Write("Saisie d'un descriptif de pièce." + LF);
   Console.Write("--------------------------------" + LF);
 
   // Identifiant
   pièceSaisie.Id= Lire.Chaine("Entrez l'identifiant"); 
 
  // Couleur
  pièceSaisie.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)");
 
   // Numéro de série
   pièceSaisie.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)"); 
 
   // Date
   pièceSaisie.DateFab = SaisirDate();
 
   // Forme et dimensions
   pièceSaisie.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)");
 
   switch (unepiece.dimension.forme)
   {
     case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?");
       break;
 
     case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?");
     break;
 
     case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?");
     break;
 
     default: Console.ReadLine();
     break;
   }
   return pièceSaisie;
}
Voir annexe pour les fonctions :
  • Lire.Entier
  • Lire.Double

Explication sur l'origine de l'erreur

Il y a plusieurs erreurs dans le code ci-dessus !

J'ai mis :

  • pièceSaisie.Id= Lire.Chaine(“Entrez l'identifiant”);
  • pièceSaisie.couleurPièce = SaisirCouleur(“Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)”);
  • etc..

Il faut corriger en1) :

  • unepiece.Id= Lire.Chaine(“Entrez l'identifiant”);
  • unepiece.couleurPièce = SaisirCouleur(“Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)”);

⇒ Et pour affecter chaque variable effective unepiece.Id ; unepiece.couleurPièce etc, il est inutile d'initialiser une variable effective de type EnregPièce 2).

J'avais donc faux de charger un emplacement mémoire en cherchant à faire 3) :

   // Déclarations
   EnregPièce pièceSaisie = new EnregPièce();

ou

   // Déclarations
   EnregPièce unepiece = new EnregPièce(); 

mais il me semble qu'il est nécessaire de conserver au moins emplacement mémoire :4)

internal static EnregPièce SaisirPièce(ref EnregPièce unepiece)
{
  // Titre 
  Console.Write("Saisie d'un descriptif de pièce." + LF);
  Console.Write("--------------------------------" + LF);
 
  // Identifiant
  unepiece.Id = Lire.Chaine("Entrez l'identifiant");                // on fait confiance à l'utilisateur pour le format
 
  // Couleur
  unepiece.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)");
 
  // Numéro de série
  unepiece.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)");
 
  // Date
  unepiece.DateFab = SaisirDate();
 
  // Forme et dimensions
  unepiece.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)");
  switch (unepiece.dimension.forme)
  {
    case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?");
    break;
 
    case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?");
    break;
 
    case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); 
    unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?");
    break;
 
    default: Console.ReadLine();
    break;
    }
    return unepiece;
}

on pourrait ne saisir par quelle magie la variable effective unepiece de type EnregPièce a un emplacement en mémoire.

Le problème disparaît quand on analyse les paramètres passés aux fonctions :

  • 1) RemplirTableauPiece(out EnregPièce[] piece_tableau, out int indi)

On va renvoyé au programme principal un tableau de type EnregPièce[]

  • 2) Et on remplit chaque case du tableau (et non le tableau lui-même) par un passage par référence DE SES CASES qui permet de modifier leurs valeurs 5);
  • 3) Ses cases sont :
    • unepiece.Id
    • unepiece.couleurPièce
    • unepiece.numeroSerie
  • Des variables effectives de types différents mais qui suivent la structure de donnée définie par le type EnregPièce définit dans le programme principal.
    public struct EnregPièce	// Déclaration d'une structure de stockage d'un descriptif de pièce
    {
        public string Id;
        public int numeroSerie;                       
        public couleur couleurPièce;              
        public date DateFab;                          
    }

Les fonction utilisées par la fonction "SaisirPièce"

SaisirCouleur

private static couleur SaisirCouleur(String invite)
{
   Boolean ok = false;
   String s;
   couleur val = (couleur)0;
   do // cette boucle obtient une chaine correcte
   {
       Console.Write(invite + " : ");
       s = Console.ReadLine();
       // je transforme la chaine au format attendu
       s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
       if (Enum.TryParse<couleur>(s, out val))
       // je récupère la valeur associée à la chaine
       {
             ok = true;
          }
          else
            {
               Console.WriteLine("Saise erronée, veuillez recommencer");
            }
        } while (!ok);
        return val;
}

SaisirDate

private static date SaisirDate()
{
    date dateRetournée; // déclaration d'une variable de type 'structurée' date
 
    // Saisie du nom du jour
    dateRetournée.NomJour = SaisieNomJour("Donnez le jour de la semaine (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)");
 
    // Saisie du jour 
    dateRetournée.jourChiffre = Lire.Entier("Donnez le n° du Jour (de 1 à 30/31 ");
 
    // Saisie du mois 
    dateRetournée.Mois = SaisieMois("Donnez le mois");
 
    // Saisie de l'année 
    dateRetournée.Annee = Lire.Entier("Donnez l'année");
 
    return dateRetournée;
}

La fonction SaisieMois

private static moisAnnée SaisieMois(string invite)
{
    Boolean ok = false;
    String s;
    moisAnnée Mois = (moisAnnée)0;
    do // cette boucle obtient une chaine correcte
    {
 
        Console.Write(invite + " : ");
        s = Console.ReadLine();
        // je transforme la chaine au format attendu
        s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
        if (Enum.TryParse<moisAnnée>(s, out Mois))
        // je récupère la valeur associée à la chaine
        {
            ok = true;
        }
        else
        {
            Console.WriteLine("Saise erronée, veuillez recommencer");
        }
    } while (!ok);
    return Mois;
}

La fonction SaisieNomJour

private static jourSemaine SaisieNomJour(string invite)
{
    Boolean ok = false;
    String s;
    jourSemaine NomJour = (jourSemaine)0;
    do // cette boucle obtient une chaine correcte
    {
 
        Console.Write(invite + " : ");
        s = Console.ReadLine();
        // je transforme la chaine au format attendu
        s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
        if (Enum.TryParse<jourSemaine>(s, out NomJour))
        // je récupère la valeur associée à la chaine
        {
            ok = true;
        }
        else
        {
            Console.WriteLine("Saise erronée, veuillez recommencer");
        }
    } while (!ok);
    return NomJour;
}

La fonction

private static forme SaisieForme(string invite)
{
    Boolean ok = false;
    String s;
    forme forme = (forme)0;
    do // cette boucle obtient une chaine correcte
    {
        Console.Write(invite + " : ");
        s = Console.ReadLine();
        // je transforme la chaine au format attendu
        s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
        if (Enum.TryParse<forme>(s, out forme))
        // je récupère la valeur associée à la chaine
        {
            ok = true;
        }
        else
        {
            Console.WriteLine("Saise erronée, veuillez recommencer");
        }
    } while (!ok);
    return forme;
}

SaisieRayon

private static double SaisieRayon(string invite)
{
    double leRayon;
    leRayon = Lire.Double("Donnez le rayon de la pièce");
    return leRayon;
}

Le programme de la fonction "AfficherTableauPiece"

internal static void AfficherTableauPiece(EnregPièce[] Tableaupiece, int indice)
{
    int cpteur;     //compteur de piece
    cpteur = indice++; // indice de parcours
    Console.WriteLine("Vous avez saisi " + cpteur + " pièce(s). Tapez entrée pour voir toutes les caractéristiques saisies.");
    Console.ReadLine();
    indice = 0;    //init indice
 
    while (indice < cpteur)
    {
        Console.WriteLine("Identifiant : " + Tableaupiece[indice].Id + " || Numéro de série : " + Tableaupiece[indice].numeroSerie + " || Couleur : " + Tableaupiece[indice].couleurPièce + " || Date de fabrication : " + Tableaupiece[indice].DateFab.NomJour + " " + Tableaupiece[indice].DateFab.jourChiffre + " " + Tableaupiece[indice].DateFab.Mois + " " + Tableaupiece[indice].DateFab.Annee);
        Console.WriteLine("\nType : " + Tableaupiece[indice].dimension.forme);
        switch (Tableaupiece[indice].dimension.forme)
        {
            case forme.Sphérique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon);
                break;
            case forme.Cylindrique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon + " et une hauteur de " + Tableaupiece[indice].dimension.hauteur);
                break;
            case forme.Cubique: Console.WriteLine(" avec un côté de " + Tableaupiece[indice].dimension.cote);
                break;
            default: Console.ReadLine();
                break;
 
        }
        indice++;
    }

Utilisation

Voici donc donc le résultat qui selon mes tests fonctionne.
Nous voilà avec deux classes que je laisse en téléchargement:

1) Le programme principal

program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PiècesUsine
{
    public struct EnregPièce	// Déclaration d'une structure de stockage d'un descriptif de pièce
    {
        public string Id;			                     // Identifiant de la pièce
        public int numeroSerie;                          // numéro de série des pièces
        public couleur couleurPièce;                     // Voir liste énumérée 'couleur'
        public date DateFab;                             // Voir structure 'date' utilisant deux listes énumérée, 'jourSemaine' et 'moisAnnée'
        public mesure dimension;                         // Voir structure 'mesure' utilisant la liste énumérée 'forme'
    }
 
    public enum couleur { Jaune, Vert, Bleu, Rouge, Orange, Mauve };
 
    public struct date
    {
        public jourSemaine NomJour;     // Voir Liste énumérée 'jourSemaine'
        public moisAnnée Mois;       // Voir Liste énumérée 'moisAnnée'
        public int jourChiffre;      // le numéro du jour
        public int Annee;            // numéro de l'année
    }
    public enum jourSemaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche };
    public enum moisAnnée { Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre };
 
    public struct mesure   // tout ce qui constitue les mesures des pièces
    {
        public forme forme;                             // forme des pièces
        public double rayon;                            // rayon pour les pièces cylindriques et sphériques
        public double cote;                             // côté pour les pièces cubiques
        public double hauteur;                          // hauteur pour les pièces cylindriques
    }
    public enum forme { Cubique, Cylindrique, Sphérique };
 
    class Program
    {
        public const int taille = 1000;
        static void Main(string[] args)
 
        {
            int indice;
            EnregPièce[] Tableaupiece;
 
            EnginDePieces.RemplirTableauPiece(out Tableaupiece, out indice);
 
            EnginDePieces.AfficherTableauPiece(Tableaupiece, indice);
 
 
            Console.ReadLine();
            Console.WriteLine();
        }
 
 
 
 
    } // Class Program
}

2)un engin de pièce avec les fonctions utilisées par le programme principal

enginDePièces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PiècesUsine
{
 
    public class EnginDePieces
    {
        public const char LF = '\u000A';// caractère de retour à la ligne
        public const int MAX_TAB_PIECE = 100; // Tableau contenant les decriptifs de pièces
 
        public static bool veutContinuer()
        {
            bool résultat;
            bool réponseOK;
            char réponse;
 
            résultat = false;   // inutile, mais demandé par C#
            réponseOK = false;  // passera à VRAI dès que l'opérateur saisi est accepté
            // et permettra la sortie de la boucle.
            do
            {
                réponse = Char.ToUpper(Lire.Caractere(LF + "Voulez-vous continuer (O ou N) ?"));
 
                if (réponse == 'O')
                {
                    résultat = true;
                    réponseOK = true;
                }
                else if (réponse == 'N')
                {
                    résultat = false;
                    réponseOK = true;
                }
 
            } while (!réponseOK);  //  arrêt quand la réponse est OK (O, o, N ou n).
            return résultat;
        }  // fin veutContinuer
 
        public static void RemplirTableauPiece(out EnregPièce[] piece_tableau, out int indi)
        {
            piece_tableau = new EnregPièce[MAX_TAB_PIECE];
 
            indi = 0;
 
            do
            {
               piece_tableau[indi] = SaisirPièce(ref piece_tableau[indi]); // le tableau est déjà passé en référence
                indi++;
 
            } while (veutContinuer());
        }
 
        internal static EnregPièce SaisirPièce(ref EnregPièce unepiece)
        {
            // Déclarations
            //EnregPièce pièceSaisie = new EnregPièce(); // initialisation de la structure pièceSaisie
 
            // Titre 
            Console.Write("Saisie d'un descriptif de pièce." + LF);
            Console.Write("--------------------------------" + LF);
 
            // Identifiant
            unepiece.Id = Lire.Chaine("Entrez l'identifiant");                // on fait confiance à l'utilisateur pour le format
 
            // Couleur
            unepiece.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)");
 
            // Numéro de série
            unepiece.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)");       // on fait confiance à l'utilisateur pour le format               
 
            // Date
            unepiece.DateFab = SaisirDate();
 
            // Forme et dimensions
            unepiece.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)");
            switch (unepiece.dimension.forme)
            {
                case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?");
                    break;
 
                case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?");
                    break;
 
                case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); 
                                        unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?");
                    break;
 
                default: Console.ReadLine();
                    break;
            }
 
            return unepiece;
        }
 
        private static couleur SaisirCouleur(String invite)
        {
            Boolean ok = false;
            String s;
            couleur val = (couleur)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<couleur>(s, out val))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return val;
        }
 
        private static date SaisirDate()
        {
            date dateRetournée; // déclaration d'une variable de type 'structurée' date
 
            // Saisie du nom du jour
            dateRetournée.NomJour = SaisieNomJour("Donnez le jour de la semaine (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)");
 
            // Saisie du jour 
            dateRetournée.jourChiffre = Lire.Entier("Donnez le n° du Jour (de 1 à 30/31 ");
 
            // Saisie du mois 
            dateRetournée.Mois = SaisieMois("Donnez le mois");
 
            // Saisie de l'année 
            dateRetournée.Annee = Lire.Entier("Donnez l'année");
 
            return dateRetournée;
        }
 
private static moisAnnée SaisieMois(string invite)
{
    Boolean ok = false;
    String s;
    moisAnnée Mois = (moisAnnée)0;
    do // cette boucle obtient une chaine correcte
    {
 
        Console.Write(invite + " : ");
        s = Console.ReadLine();
        // je transforme la chaine au format attendu
        s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
        if (Enum.TryParse<moisAnnée>(s, out Mois))
        // je récupère la valeur associée à la chaine
        {
            ok = true;
        }
        else
        {
            Console.WriteLine("Saise erronée, veuillez recommencer");
        }
    } while (!ok);
    return Mois;
}
 
private static jourSemaine SaisieNomJour(string invite)
{
    Boolean ok = false;
    String s;
    jourSemaine NomJour = (jourSemaine)0;
    do // cette boucle obtient une chaine correcte
    {
 
        Console.Write(invite + " : ");
        s = Console.ReadLine();
        // je transforme la chaine au format attendu
        s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
        if (Enum.TryParse<jourSemaine>(s, out NomJour))
        // je récupère la valeur associée à la chaine
        {
            ok = true;
        }
        else
        {
            Console.WriteLine("Saise erronée, veuillez recommencer");
        }
    } while (!ok);
    return NomJour;
}
 
 
private static forme SaisieForme(string invite)
{
    Boolean ok = false;
    String s;
    forme forme = (forme)0;
    do // cette boucle obtient une chaine correcte
    {
        Console.Write(invite + " : ");
        s = Console.ReadLine();
        // je transforme la chaine au format attendu
        s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
        if (Enum.TryParse<forme>(s, out forme))
        // je récupère la valeur associée à la chaine
        {
            ok = true;
        }
        else
        {
            Console.WriteLine("Saise erronée, veuillez recommencer");
        }
    } while (!ok);
    return forme;
}
 
        private static double SaisieRayon(string invite)
        {
            double leRayon;
            leRayon = Lire.Double("Donnez le rayon de la pièce");
            return leRayon;
        }
 
internal static void AfficherTableauPiece(EnregPièce[] Tableaupiece, int indice)
{
    int cpteur;     //compteur de piece
    cpteur = indice++; // indice de parcours
    Console.WriteLine("Vous avez saisi " + cpteur + " pièce(s). Tapez entrée pour voir toutes les caractéristiques saisies.");
    Console.ReadLine();
    indice = 0;    //init indice
 
    while (indice < cpteur)
    {
        Console.WriteLine("Identifiant : " + Tableaupiece[indice].Id + " || Numéro de série : " + Tableaupiece[indice].numeroSerie + " || Couleur : " + Tableaupiece[indice].couleurPièce + " || Date de fabrication : " + Tableaupiece[indice].DateFab.NomJour + " " + Tableaupiece[indice].DateFab.jourChiffre + " " + Tableaupiece[indice].DateFab.Mois + " " + Tableaupiece[indice].DateFab.Annee);
        Console.WriteLine("\nType : " + Tableaupiece[indice].dimension.forme);
        switch (Tableaupiece[indice].dimension.forme)
        {
            case forme.Sphérique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon);
                break;
            case forme.Cylindrique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon + " et une hauteur de " + Tableaupiece[indice].dimension.hauteur);
                break;
            case forme.Cubique: Console.WriteLine(" avec un côté de " + Tableaupiece[indice].dimension.cote);
                break;
            default: Console.ReadLine();
                break;
 
        }
        indice++;
    }
 
        }
    } // celui de class EnginDePieces
}

Retour de l'exécution




Réflexions sur une autre méthode d'approche

Mes fichiers erroné

progPrincipal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PieceUsineCorrThib
{
    public struct EnregPièce    // Déclaration d'une structure de stockage d'un descriptif de pièce
    {
        public string Id;                                 // Identifiant de la pièce
        public int numeroSerie;                          // numéro de série des pièces
        public couleur couleurPièce;                     // Voir liste énumérée 'couleur'
        public date DateFab;                             // Voir structure 'date' utilisant deux listes énumérée, 'jourSemaine' et 'moisAnnée'
        public mesure dimension;                         // Voir structure 'mesure' utilisant la liste énumérée 'forme'
    }
 
    public enum couleur { Jaune, Vert, Bleu, Rouge, Orange, Mauve };
 
    public struct date
    {
        public jourSemaine NomJour;     // Voir Liste énumérée 'jourSemaine'
        public moisAnnée Mois;       // Voir Liste énumérée 'moisAnnée'
        public int jourChiffre;      // le numéro du jour
        public int Annee;            // numéro de l'année
    }
    public enum jourSemaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche };
    public enum moisAnnée { Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre };
 
    public struct mesure   // tout ce qui constitue les mesures des pièces
    {
        public forme forme;                             // forme des pièces
        public double rayon;                            // rayon pour les pièces cylindriques et sphériques
        public double cote;                             // côté pour les pièces cubiques
        public double hauteur;                          // hauteur pour les pièces cylindriques
    }
    public enum forme { Cubique, Cylindrique, Sphérique };
 
    class Program
    {
        public const int taille = 1000;
        static void Main(string[] args)
        {
            int indice;
            EnregPièce[] Tableaupiece;
 
            EnginDePieces.RemplirTableauPiece(out Tableaupiece, out indice);
 
            EnginDePieces.AfficherTableauPiece(Tableaupiece, indice);
 
 
            Console.ReadLine();
            Console.WriteLine();
        }
    }
}
EnginDePièceFaux
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PieceUsineCorrThib
{
    public class EnginDeClass
    {
        public const char LF = '\u000A';// caractère de retour à la ligne
        public const int MAX_TAB_PIECE = 100; // Tableau contenant les decriptifs de pièces
 
        public static bool veutContinuer()
        {
            bool résultat;
            bool réponseOK;
            char réponse;
 
            résultat = false;   // inutile, mais demandé par C#
            réponseOK = false;  // passera à VRAI dès que l'opérateur saisi est accepté
            // et permettra la sortie de la boucle.
            do
            {
                réponse = Char.ToUpper(Lire.Caractere(LF + "Voulez-vous continuer (O ou N) ?"));
 
                if (réponse == 'O')
                {
                    résultat = true;
                    réponseOK = true;
                }
                else if (réponse == 'N')
                {
                    résultat = false;
                    réponseOK = true;
                }
 
            } while (!réponseOK);  //  arrêt quand la réponse est OK (O, o, N ou n).
            return résultat;
        }  // fin veutContinuer
 
        public static void RemplirTableauPiece(out EnregPièce[] piece_tableau, out int indi)
        {
            piece_tableau = new EnregPièce[MAX_TAB_PIECE];
 
            indi = 0;
 
            do
            {
                piece_tableau[indi] = SaisirPièce(ref piece_tableau[indi]);
                indi++;
 
            } while (veutContinuer());
        }
 
        internal static EnregPièce SaisirPièce(ref EnregPièce unepiece)
        {
            // Déclarations
            EnregPièce pièceSaisie = new EnregPièce(); // initialisation de la structure pièceSaisie
 
            // Titre
            Console.Write("Saisie d'un descriptif de pièce." + LF);
            Console.Write("--------------------------------" + LF);
 
            // Identifiant
            pièceSaisie.Id= Lire.Chaine("Entrez l'identifiant");                // on fait confiance à l'utilisateur pour le format
 
            // Couleur
            pièceSaisie.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)");
 
            // Numéro de série
            pièceSaisie.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)");       // on fait confiance à l'utilisateur pour le format              
 
            // Date
            pièceSaisie.DateFab = SaisirDate();
 
            // Forme et dimensions
            pièceSaisie.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)");
            switch (unepiece.dimension.forme)
            {
                case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?");
                    break;
 
                case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?");
                    break;
 
                case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?");
                    break;
 
                default: Console.ReadLine();
                    break;
            }
 
            return pièceSaisie;
        }
 
        private static couleur SaisirCouleur(String invite)
        {
            Boolean ok = false;
            String s;
            couleur val = (couleur)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<couleur>(s, out val))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return val;
        }
 
        private static date SaisirDate()
        {
            date dateRetournée; // déclaration d'une variable de type 'structurée' date
 
            // Saisie du nom du jour
            dateRetournée.NomJour = SaisieNomJour("Donnez le jour de la semaine (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)");
 
            // Saisie du jour
            dateRetournée.jourChiffre = Lire.Entier("Donnez le n° du Jour (de 1 à 30/31 ");
 
            // Saisie du mois
            dateRetournée.Mois = SaisieMois("Donnez le mois");
 
            // Saisie de l'année
            dateRetournée.Annee = Lire.Entier("Donnez l'année");
 
            return dateRetournée;
        }
 
        private static moisAnnée SaisieMois(string invite)
        {
            Boolean ok = false;
            String s;
            moisAnnée Mois = (moisAnnée)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<moisAnnée>(s, out Mois))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return Mois;
 
        }
 
        private static jourSemaine SaisieNomJour(string invite)
        {
            Boolean ok = false;
            String s;
            jourSemaine NomJour = (jourSemaine)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<jourSemaine>(s, out NomJour))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return NomJour;
        }
 
 
        private static forme SaisieForme(string invite)
        {
            Boolean ok = false;
            String s;
            forme forme = (forme)0;
            do // cette boucle obtient une chaine correcte
            {
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<forme>(s, out forme))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return forme;
        }
 
        private static double SaisieRayon(string invite)
        {
            double leRayon;
            leRayon = Lire.Double("Donnez le rayon de la pièce");
            return leRayon;
        }
 
        internal static void AfficherTableauPiece(EnregPièce[] Tableaupiece, int indice)
        {
            int cpteur;     //compteur de piece
            cpteur = indice++; // indice de parcours
            Console.WriteLine("Vous avez saisi " + cpteur + " pièce(s). Tapez entrée pour voir toutes les caractéristiques saisies.");
            Console.ReadLine();
            indice = 0;    //init indice
 
            while (indice < cpteur)
            {
                Console.WriteLine("Identifiant : " + Tableaupiece[indice].Id + " || Numéro de série : " + Tableaupiece[indice].numeroSerie + " || Couleur : " + Tableaupiece[indice].couleurPièce + " || Date de fabrication : " + Tableaupiece[indice].DateFab.NomJour + " " + Tableaupiece[indice].DateFab.jourChiffre + " " + Tableaupiece[indice].DateFab.Mois + " " + Tableaupiece[indice].DateFab.Annee);
                Console.WriteLine("\nType : " + Tableaupiece[indice].dimension.forme);
                switch (Tableaupiece[indice].dimension.forme)
                {
                    case forme.Sphérique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon);
                        break;
                    case forme.Cylindrique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon + " et une hauteur de " + Tableaupiece[indice].dimension.hauteur);
                        break;
                    case forme.Cubique: Console.WriteLine(" avec un côté de " + Tableaupiece[indice].dimension.cube);
                        break;
                    default: Console.ReadLine();
                        break;
 
                }
                indice++;
            }
 
        }
    }
}

Correction d'un ami

En quatre points :

  • la fonction RemplirTableauPiece :
    on commente piece_tableau[indi] = SaisirPièce(ref piece_tableau[indi]); * la fonction SaisirPièce : qu'on met en void pour qu'elle ne renvoie rien au de lui faire renvoyé une variable de type EnregPièce * fonction SaisirPièce dont on commente RemplirTableauPiece
    on commente
    return unepiece;
  • fonction SaisirPièce dont on remplace par unepiece.Id ; unepiece.couleurPièce; etc.

Ce qui donne les fichiers suivants après correction

ProgramCorr.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PieceUsineCorrThib
{
    public struct EnregPièce    // Déclaration d'une structure de stockage d'un descriptif de pièce
    {
        public string Id;                                 // Identifiant de la pièce
        public int numeroSerie;                          // numéro de série des pièces
        public couleur couleurPièce;                     // Voir liste énumérée 'couleur'
        public date DateFab;                             // Voir structure 'date' utilisant deux listes énumérée, 'jourSemaine' et 'moisAnnée'
        public mesure dimension;                         // Voir structure 'mesure' utilisant la liste énumérée 'forme'
    }
 
    public enum couleur { Jaune, Vert, Bleu, Rouge, Orange, Mauve };
 
    public struct date
    {
        public jourSemaine NomJour;     // Voir Liste énumérée 'jourSemaine'
        public moisAnnée Mois;       // Voir Liste énumérée 'moisAnnée'
        public int jourChiffre;      // le numéro du jour
        public int Annee;            // numéro de l'année
    }
    public enum jourSemaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche };
    public enum moisAnnée { Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre };
 
    public struct mesure   // tout ce qui constitue les mesures des pièces
    {
        public forme forme;                             // forme des pièces
        public double rayon;                            // rayon pour les pièces cylindriques et sphériques
        public double cote;                             // côté pour les pièces cubiques
        public double hauteur;                          // hauteur pour les pièces cylindriques
    }
    public enum forme { Cubique, Cylindrique, Sphérique };
 
    class Program
    {
        public const int taille = 1000;
        static void Main(string[] args)
        {
            int indice;
            EnregPièce[] Tableaupiece;
 
            EnginDePieces.RemplirTableauPiece(out Tableaupiece, out indice);
 
            EnginDePieces.AfficherTableauPiece(Tableaupiece, indice);
 
 
            Console.ReadLine();
            Console.WriteLine();
        }
    }
}
EnginDeClass
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace PieceUsineCorrThib
{
    public class EnginDePièces
    {
        public const char LF = '\u000A';// caractère de retour à la ligne
        public const int MAX_TAB_PIECE = 100; // Tableau contenant les decriptifs de pièces
 
        public static bool veutContinuer()
        {
            bool résultat;
            bool réponseOK;
            char réponse;
 
            résultat = false;   // inutile, mais demandé par C#
            réponseOK = false;  // passera à VRAI dès que l'opérateur saisi est accepté
            // et permettra la sortie de la boucle.
            do
            {
                réponse = Char.ToUpper(Lire.Caractere(LF + "Voulez-vous continuer (O ou N) ?"));
 
                if (réponse == 'O')
                {
                    résultat = true;
                    réponseOK = true;
                }
                else if (réponse == 'N')
                {
                    résultat = false;
                    réponseOK = true;
                }
 
            } while (!réponseOK);  //  arrêt quand la réponse est OK (O, o, N ou n).
            return résultat;
        }  // fin veutContinuer
 
        public static void RemplirTableauPiece(out EnregPièce[] piece_tableau, out int indi)
        {
            piece_tableau = new EnregPièce[MAX_TAB_PIECE];
 
            indi = 0;
 
            do
            {
                //piece_tableau[indi] = SaisirPièce(ref piece_tableau[indi]);
                SaisirPièce(ref piece_tableau[indi]);
                indi++;
            } while (veutContinuer());
        }
 
        internal static void SaisirPièce(ref EnregPièce unepiece)
        {
            // Déclarations
           // EnregPièce pièceSaisie = new EnregPièce(); // initialisation de la structure pièceSaisie
 
            // Titre
            Console.Write("Saisie d'un descriptif de pièce." + LF);
            Console.Write("--------------------------------" + LF);
 
            // Identifiant
            unepiece.Id = Lire.Chaine("Entrez l'identifiant");                // on fait confiance à l'utilisateur pour le format
 
            // Couleur
            unepiece.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)");
 
            // Numéro de série
            unepiece.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)");       // on fait confiance à l'utilisateur pour le format              
 
            // Date
            unepiece.DateFab = SaisirDate();
 
            // Forme et dimensions
            unepiece.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)");
            switch (unepiece.dimension.forme)
            {
                case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?");
                    break;
 
                case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?");
                    break;
 
                case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?");
                    break;
 
                default: Console.ReadLine();
                    break;
            }
 
            //return unepiece;
        }
 
        private static couleur SaisirCouleur(String invite)
        {
            Boolean ok = false;
            String s;
            couleur val = (couleur)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<couleur>(s, out val))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return val;
        }
 
        private static date SaisirDate()
        {
            date dateRetournée; // déclaration d'une variable de type 'structurée' date
 
            // Saisie du nom du jour
            dateRetournée.NomJour = SaisieNomJour("Donnez le jour de la semaine (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)");
 
            // Saisie du jour
            dateRetournée.jourChiffre = Lire.Entier("Donnez le n° du Jour (de 1 à 30/31 ");
 
            // Saisie du mois
            dateRetournée.Mois = SaisieMois("Donnez le mois");
 
            // Saisie de l'année
            dateRetournée.Annee = Lire.Entier("Donnez l'année");
 
            return dateRetournée;
        }
 
        private static moisAnnée SaisieMois(string invite)
        {
            Boolean ok = false;
            String s;
            moisAnnée Mois = (moisAnnée)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<moisAnnée>(s, out Mois))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return Mois;
 
        }
 
        private static jourSemaine SaisieNomJour(string invite)
        {
            Boolean ok = false;
            String s;
            jourSemaine NomJour = (jourSemaine)0;
            do // cette boucle obtient une chaine correcte
            {
 
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<jourSemaine>(s, out NomJour))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return NomJour;
        }
 
 
        private static forme SaisieForme(string invite)
        {
            Boolean ok = false;
            String s;
            forme forme = (forme)0;
            do // cette boucle obtient une chaine correcte
            {
                Console.Write(invite + " : ");
                s = Console.ReadLine();
                // je transforme la chaine au format attendu
                s = Char.ToUpper(s[0]) + s.Substring(1, s.Length - 1).ToLower();
                if (Enum.TryParse<forme>(s, out forme))
                // je récupère la valeur associée à la chaine
                {
                    ok = true;
                }
                else
                {
                    Console.WriteLine("Saise erronée, veuillez recommencer");
                }
            } while (!ok);
            return forme;
        }
 
        private static double SaisieRayon(string invite)
        {
            double leRayon;
            leRayon = Lire.Double("Donnez le rayon de la pièce");
            return leRayon;
        }
 
        internal static void AfficherTableauPiece(EnregPièce[] Tableaupiece, int indice)
        {
            int cpteur;     //compteur de piece
            cpteur = indice++; // indice de parcours
            Console.WriteLine("Vous avez saisi " + cpteur + " pièce(s). Tapez entrée pour voir toutes les caractéristiques saisies.");
            Console.ReadLine();
            indice = 0;    //init indice
 
            while (indice < cpteur)
            {
                Console.WriteLine("Identifiant : " + Tableaupiece[indice].Id + " || Numéro de série : " + Tableaupiece[indice].numeroSerie + " || Couleur : " + Tableaupiece[indice].couleurPièce + " || Date de fabrication : " + Tableaupiece[indice].DateFab.NomJour + " " + Tableaupiece[indice].DateFab.jourChiffre + " " + Tableaupiece[indice].DateFab.Mois + " " + Tableaupiece[indice].DateFab.Annee);
                Console.WriteLine("\nType : " + Tableaupiece[indice].dimension.forme);
                switch (Tableaupiece[indice].dimension.forme)
                {
                    case forme.Sphérique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon);
                        break;
                    case forme.Cylindrique: Console.WriteLine(" avec un rayon de " + Tableaupiece[indice].dimension.rayon + " et une hauteur de " + Tableaupiece[indice].dimension.hauteur);
                        break;
                    case forme.Cubique: Console.WriteLine(" avec un côté de " + Tableaupiece[indice].dimension.cube);
                        break;
                    default: Console.ReadLine();
                        break;
 
                }
                indice++;
            }
 
        }
    }
}
1)
merci Thibault, c'est la “partie” de la correction que “j'ai gardée”
2)
EnregPièce pièceSaisie = new EnregPièce(); : La aussi merci, je suis tout à fait d'accord
3)
car j'en avais déjà un
4)
piece_tableau = new EnregPièce[MAX_TAB_PIECE];
5)
ses cases du tableau sont disponibles sans passer par le tableau, ni par une surcharge ou quelque chose du genre EnregPièce pièceSaisie = new EnregPièce();, c'est cela que je ne comprenais pas !!!
utilisateurs/hypathie/tutos/brouillon-algo-c.txt · Dernière modification: 03/01/2015 18:49 par Hypathie

Pied de page des forums

Propulsé par FluxBB