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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:brouillon-algo-c [03/01/2015 10:18] Hypathie [Utilisation] |
utilisateurs:hypathie:tutos:brouillon-algo-c [03/01/2015 11:59] Hypathie [Implémentation] |
||
---|---|---|---|
Ligne 166: | Ligne 166: | ||
</note> | </note> | ||
====Programme de la fonction SaisirPièce ==== | ====Programme de la fonction SaisirPièce ==== | ||
+ | ===Plusieurs erreurs à analyser=== | ||
+ | //L'analyse et une correction possible en note plus bas.// | ||
<code c> | <code c> | ||
internal static EnregPièce SaisirPièce(ref EnregPièce unepiece) | internal static EnregPièce SaisirPièce(ref EnregPièce unepiece) | ||
Ligne 216: | Ligne 217: | ||
</note> | </note> | ||
+ | |||
+ | ===Explication sur l'origine de l'erreur=== | ||
<note important> | <note important> | ||
- | Il y a une erreur dans le code ci-dessus !\\ | + | Il y a plusieurs erreurs dans le code ci-dessus !\\ |
J'ai mis : | J'ai mis : | ||
Ligne 224: | Ligne 227: | ||
* etc.. | * etc.. | ||
- | Il faut corriger en((merci Thibault)) : | + | Il faut corriger en((merci Thibault, c'est la "partie" de la correction que "j'ai gardée")) : |
* ''unepiece.Id= Lire.Chaine("Entrez l'identifiant");'' | * ''unepiece.Id= Lire.Chaine("Entrez l'identifiant");'' | ||
* ''unepiece.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)");'' | * ''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 ''((''EnregPièce pièceSaisie = new EnregPièce();'')). | + | => Et pour affecter chaque variable effective unepiece.Id ; unepiece.couleurPièce etc, il est inutile d'initialiser une variable effective de type ''EnregPièce ''((''EnregPièce pièceSaisie = new EnregPièce();'' : La aussi merci, je suis tout à fait d'accord)). |
- | **__J'ai voulu écrire :__** | + | **__J'avais donc faux de charger un emplacement mémoire en cherchant à faire ((car j'en avais déjà un)) :__** |
<code c> | <code c> | ||
Ligne 244: | Ligne 247: | ||
</code> | </code> | ||
- | **__tandis que ceci fonctionne :__** | + | **__mais il me semble qu'il est nécessaire de conserver au moins emplacement mémoire :((piece_tableau = new EnregPièce[MAX_TAB_PIECE];))__** |
<code c> | <code c> | ||
Ligne 818: | Ligne 821: | ||
</code> | </code> | ||
+ | |||
+ | ===Retour de l'exécution === | ||
+ | {{http://pix.toile-libre.org/upload/original/1420277046.png}}\\ | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1420277552.png}} \\ | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1420277621.png}}\\ | ||
+ | |||
+ | |||
+ | =====Réflexions sur une autre méthode d'approche ===== | ||
+ | |||
+ | ===Mes fichiers erroné === | ||
+ | |||
+ | <code text 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(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code text 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++; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ====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=== | ||
+ | |||
+ | <code text 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(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code text 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]); | ||
+ | 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++; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ===Cela donne le résultat suivant à l'exécution=== | ||
+ | |||
+ | Plus de saisie par l'utilisateur :\\ | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1420280056.png}} | ||
+ | |||
+ |