Oefening: de decimale uitvoer opmaken

Voltooid

In deze oefening berekent u de uiteindelijke GPA en wijzigt u de console-uitvoer om de gewenste rapportage-indeling te bereiken. De GPA is gelijk aan de som van de totale cijferpunten gedeeld door de som van de totale tegoeduren.

De uiteindelijke GPA berekenen

  1. Zoek in de .NET-editor de Console.WriteLine()-instructies die worden gebruikt om de cursusgegevens weer te geven.

  2. Verwijder de volgende code uit de vorige oefening:

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

    Omdat u hebt gecontroleerd of uw waarden juist zijn, is deze regel niet meer nodig.

  3. Maak een lege coderegel boven de console.WriteLine()-instructies.

  4. Voer op de lege coderegel die u hebt gemaakt, de volgende code in om een variabele te initialiseren waarmee de uiteindelijke GPA wordt opgeslagen:

    decimal gradePointAverage = totalGradePoints/totalCreditHours;
    
    
  5. Neem even de tijd om rekening te houden met de gegevenstypen die u wilt delen.

    Als u wilt dat het resultaat van een delingsberekening een decimale waarde is, moet het dividend of deler van het type decimaal zijn (of beide). Wanneer u gehele getallen in de berekening gebruikt, moet u de cast-operator gebruiken om een geheel getal tijdelijk te converteren naar een decimaal.

  6. Als u een decimale waarde wilt ophalen uit de deling, werkt u de code als volgt bij:

    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    
  7. Navigeer naar de laatste console.WriteLine()-instructie en maak een nieuwe lege coderegel na de laatste instructie.

  8. Voer de volgende code in om de uiteindelijke GPA weer te geven:

    Console.WriteLine($"Final GPA: {gradePointAverage}");
    
  9. Selecteer Uitvoeren om de resultaten weer te geven.

    Vergelijk de uitvoer van uw toepassing met de volgende uitvoer:

    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
    

De decimale uitvoer opmaken

Mogelijk hebt u gemerkt dat het decimale resultaat veel meer cijfers bevat dan een standaard-GPA. In deze taak bewerkt u de decimale GPA-waarde, zodat er slechts drie cijfers worden weergegeven.

Uiteindelijk wilt u het eerste cijfer van de GPA weergeven, een decimaalteken, gevolgd door de eerste twee cijfers na het decimaalteken. U kunt deze indeling bereiken door variabelen te gebruiken om respectievelijk de voorloop- en volgcijfers op te slaan en deze vervolgens samen af te drukken met behulp van Console.WriteLine(). U kunt de wiskundige bewerkingen gebruiken die u hebt geleerd om de voorloop- en volgcijfers te extraheren.

Notitie

Wanneer u doorgaat met uw ontwikkelaarstraject, ontdekt u ingebouwde bewerkingen die automatisch opmaak op uw gegevens kunnen toepassen. Op dit moment is dit een geweldige kans om te verstevigen wat u tot nu toe hebt geleerd.

  1. Navigeer naar de bovenkant van de console.WriteLine()-instructies.

  2. Maak een lege coderegel boven de console.WriteLine()-instructies.

  3. Voer op de lege coderegel die u hebt gemaakt, de volgende code in om een variabele te initialiseren waarmee het voorloopcijfer van de GPA wordt opgeslagen:

    int leadingDigit = (int) gradePointAverage;
    
    

    Als u het voorloopcijfer uit het decimaal wilt extraheren, wordt het naar een geheel getal gecast. Dit is een eenvoudige en betrouwbare methode omdat het casten van een breukwaarde het resultaat nooit zal afronden. Wat betekent dat als de GPA 2,99 is, de decimale waarde wordt gecast naar een int, resulteert dit in 2.

  4. Als u een variabele wilt initialiseren waarmee de eerste twee cijfers na het decimaal worden opgeslagen, voert u de volgende code in:

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

    In de eerste helft van deze bewerking verplaatst u decimaal één plaats naar rechts en castt u deze naar een geheel getal. In de tweede helft gebruikt u de rest- of modulo-operator om de rest van deling op te halen door 10, waardoor het laatste cijfer in het gehele getal wordt geïsoleerd. Hier volgt een voorbeeld:

    Stel dat gradePointAverage = 2.994573 het uitvoeren van de bewerking op deze waarden resulteert in de volgende stappen:

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

    En de resulterende waarde is firstDigit 9.

    Vervolgens past u dezelfde bewerking toe om het tweede cijfer op te halen.

  5. Voer op een nieuwe lege coderegel de volgende code in:

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

    In deze regel verplaatst u de decimale twee plaatsen en gebruikt u de modulo-operator om het laatste cijfer op te halen.

  6. Als u de uiteindelijke GPA-uitvoer wilt corrigeren, werkt u de laatste Console.WriteLine()-instructie als volgt bij:

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

Uw werk controleren

In deze taak voert u de code uit en controleert u of de uitvoer juist is.

  1. Controleer of uw code er ongeveer als volgt uitziet:

    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. Als u de code wilt uitvoeren en de opgemaakte uitvoer wilt weergeven, selecteert u Uitvoeren.

  3. Als u wilt controleren of uw code werkt zoals verwacht, vergelijkt u de uitvoer van uw toepassing met de volgende uitvoer:

    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
    

    Als uw code verschillende resultaten weergeeft, moet u uw code controleren om uw fout te vinden en updates aan te brengen. Voer de code opnieuw uit om te zien of u het probleem hebt opgelost. Ga door met het bijwerken en uitvoeren van uw code totdat uw code de verwachte resultaten produceert.

Belangrijk

Zorg ervoor dat u geen code verwijdert die u tot nu toe hebt geschreven. In de volgende oefening bouwt u voort op deze code.