Exercice - Mettre en forme la sortie décimale

Effectué

Dans le cadre de cet exercice, vous allez calculer la MPC finale et modifier la sortie de la console pour obtenir la mise en forme souhaitée. La MPC correspond à la somme totale des points divisée par la somme totale des heures de crédit.

Calculer la MPC finale

  1. Dans l’éditeur .NET, recherchez les instructions Console.WriteLine() utilisées pour afficher les informations de cours.

  2. Supprimez le code suivant entré à l’exercice précédent :

    Console.WriteLine($"{totalGradePoints} {totalCreditHours}");
    

    Vous avez vérifié que vos valeurs sont correctes et cette ligne n’est donc plus nécessaire.

  3. Créez une ligne de code vide au-dessus des instructions Console.WriteLine().

  4. Sur la ligne de code vide que vous avez créée, pour initialiser une variable qui stocke la MPC finale, entrez le code suivant :

    decimal gradePointAverage = totalGradePoints/totalCreditHours;
    
    
  5. Prenez un moment pour réfléchir aux types de données que vous divisez.

    Quand vous souhaitez que le résultat d’une division soit une valeur décimale, le dividende, le diviseur ou les deux doivent être de type décimal. Quand vous utilisez des variables de type entier dans le calcul, vous devez utiliser l’opérateur de cast pour convertir temporairement un entier en valeur décimale.

  6. Pour obtenir de la division une valeur décimale, mettez à jour votre code comme suit :

    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    
  7. Accédez à la dernière instruction Console.WriteLine() et créez une ligne de code vide au-dessous.

  8. Pour afficher la MPC finale, entrez le code suivant :

    Console.WriteLine($"Final GPA: {gradePointAverage}");
    
  9. Pour voir les résultats, sélectionnez Exécuter.

    Comparez la sortie de votre application à la sortie suivante :

    English 101 4 3
    Algebra 101 3 3
    Biology 101 3 4
    Computer Science I 3 4
    Psychology 101 4 3
    Final GPA: 3.3529411764705882352941176471
    

Mettre en forme la sortie décimale

Vous avez peut-être remarqué que le résultat décimal contient beaucoup plus de chiffres qu’une MPC standard. Dans le cadre de cette tâche, vous allez manipuler la valeur de MPC décimale pour que seuls trois chiffres apparaissent.

Au final, vous souhaitez afficher le premier chiffre de la MPC, une virgule décimale et les deux premiers chiffres après la décimale. Vous pouvez obtenir cette mise en forme en utilisant des variables pour stocker les chiffres de début et de fin respectivement, puis en les affichant ensemble avec la commande Console.WriteLine(). Vous pouvez utiliser des opérations mathématiques apprises pour extraire les chiffres de début et de fin.

Remarque

Au fil de votre parcours de développement, vous allez découvrir des opérations intégrées qui peuvent appliquer automatiquement une mise en forme à vos données. Pour l’instant, il s’agit d’une excellente occasion de renforcer les connaissances acquises jusqu’à présent.

  1. Placez-vous au-dessus des instructions Console.WriteLine().

  2. Créez une ligne de code vide au-dessus des instructions Console.WriteLine().

  3. Sur la ligne de code vide que vous avez créée, pour initialiser une variable qui stocke le chiffre de début de la MPC, entrez le code suivant :

    int leadingDigit = (int) gradePointAverage;
    
    

    Notez que pour extraire le chiffre de début de la décimale, vous la castez en valeur entière. Il s’agit d’une méthode simple et fiable, car le cast d’une valeur fractionnaire n’arrondit jamais le résultat. Cela signifie que si la MPC est 2,99, le cast de la valeur décimale en valeur entière génère la valeur 2.

  4. Pour initialiser une variable qui stocke les deux premiers chiffres après la décimale, entrez le code suivant :

    int firstDigit = (int) (gradePointAverage * 10) % 10;
    

    Dans la première moitié de cette opération, vous déplacez la décimale à droite et vous la castez sur un entier. Dans la deuxième moitié, vous utilisez l’opérateur reste, ou modulo, pour obtenir le reste d’une division par 10 qui isole le dernier chiffre de l’entier. Voici un exemple :

    Par exemple, pour gradePointAverage = 2.994573, l’exécution de l’opération sur ces valeurs entraîne les étapes suivantes :

    int firstDigit = (int) (2.994573 * 10) % 10;
    int firstDigit = 29 % 10;
    int firstDigit = 9;
    

    La valeur de firstDigit obtenue est 9.

    Ensuite, vous appliquez la même opération pour récupérer le deuxième chiffre.

  5. Entrez le code suivant sur la nouvelle ligne de code vide :

    int secondDigit = (int) (gradePointAverage * 100 ) % 10;
    

    Dans cette ligne, vous déplacez la virgule de deux positions et utilisez l’opérateur modulo pour récupérer le dernier chiffre.

  6. Pour corriger la sortie de MPC finale, mettez à jour la dernière instruction Console.WriteLine() comme suit :

    Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
    

Vérifier votre travail

Dans le cadre de cette tâche, vous allez exécuter le code et vérifier que la sortie est correcte.

  1. Vérifiez que votre code est similaire à ce qui suit :

    string studentName = "Sophia Johnson";
    string course1Name = "English 101";
    string course2Name = "Algebra 101";
    string course3Name = "Biology 101";
    string course4Name = "Computer Science I";
    string course5Name = "Psychology 101";
    
    int course1Credit = 3;
    int course2Credit = 3;
    int course3Credit = 4;
    int course4Credit = 4;
    int course5Credit = 3;
    
    int gradeA = 4;
    int gradeB = 3;
    
    int course1Grade = gradeA;
    int course2Grade = gradeB;
    int course3Grade = gradeB;
    int course4Grade = gradeB;
    int course5Grade = gradeA;
    
    int totalCreditHours = 0;
    totalCreditHours += course1Credit;
    totalCreditHours += course2Credit;
    totalCreditHours += course3Credit;
    totalCreditHours += course4Credit;
    totalCreditHours += course5Credit;
    
    int totalGradePoints = 0;
    totalGradePoints += course1Credit * course1Grade;
    totalGradePoints += course2Credit * course2Grade;
    totalGradePoints += course3Credit * course3Grade;
    totalGradePoints += course4Credit * course4Grade;
    totalGradePoints += course5Credit * course5Grade;
    
    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    int leadingDigit = (int) gradePointAverage;
    int firstDigit = (int) (gradePointAverage * 10 ) % 10;
    int secondDigit = (int) (gradePointAverage * 100 ) % 10;
    
    Console.WriteLine($"{course1Name} {course1Grade} {course1Credit}");
    Console.WriteLine($"{course2Name} {course2Grade} {course2Credit}");
    Console.WriteLine($"{course3Name} {course3Grade} {course3Credit}");
    Console.WriteLine($"{course4Name} {course4Grade} {course4Credit}");
    Console.WriteLine($"{course5Name} {course5Grade} {course5Credit}");
    
    Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
    
  2. Pour exécuter votre code et afficher la sortie mise en forme, sélectionnez Exécuter.

  3. Pour vérifier que votre code fonctionne comme prévu, comparez la sortie de votre application avec la sortie suivante :

    English 101 4 3
    Algebra 101 3 3
    Biology 101 3 4
    Computer Science I 3 4
    Psychology 101 4 3
    Final GPA: 3.35
    

    Si votre code affiche des résultats différents, vous devez le passer en revue afin de trouver votre erreur et d’effectuer des mises à jour. Réexécutez le code pour voir si vous avez résolu le problème. Continuez à mettre à jour et à exécuter votre code jusqu’à ce qu’il produise les résultats attendus.

Important

Veillez à ne pas supprimer le code que vous avez écrit jusqu’à présent. Vous utiliserez ce code dans l’exercice suivant.