Упражнение. Форматирование десятичных выходных данных

Завершено

В этом упражнении вы вычислите окончательный GPA и измените выходные данные консоли для достижения требуемого формата отчетов. GPA равен сумме общих точек оценки, разделенных на сумму общих кредитных часов.

Вычисление окончательного GPA

  1. В редакторе .NET найдите инструкции Console.WriteLine(), которые используются для отображения сведений о курсе.

  2. Удалите следующий код из предыдущего упражнения:

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

    Так как вы проверили правильность значений, эта строка больше не нужна.

  3. Создайте пустую строку кода над операторами Console.WriteLine().

  4. В пустой строке кода, созданной, чтобы инициализировать переменную, которая будет хранить окончательный GPA, введите следующий код:

    decimal gradePointAverage = totalGradePoints/totalCreditHours;
    
    
  5. Рассмотрим типы данных, которые вы разделяете.

    Если вы хотите, чтобы результат вычисления деления был десятичным значением, дивиденд или делитель должен иметь тип десятичного (или обоих). При использовании целых переменных в вычислении необходимо использовать оператор приведения для временного преобразования целочисленного числа в десятичное значение.

  6. Чтобы получить десятичное значение из деления, обновите код следующим образом:

    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    
  7. Перейдите к последней инструкции Console.WriteLine() и создайте пустую строку кода после последней инструкции.

  8. Чтобы отобразить окончательный GPA, введите следующий код:

    Console.WriteLine($"Final GPA: {gradePointAverage}");
    
  9. Чтобы просмотреть результаты, нажмите кнопку "Выполнить".

    Сравните выходные данные приложения со следующими выходными данными:

    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
    

Форматирование десятичных выходных данных

Возможно, вы заметили, что десятичный результат содержит гораздо больше цифр, чем стандартная GPA. В этой задаче вы будете управлять десятичным значением GPA, чтобы отображались только три цифры.

В конечном счете вы хотите отобразить первую цифру GPA, десятичную точку, за которой следует первые две цифры после десятичного разряда. Этот формат можно достичь с помощью переменных для хранения начальных и конечных цифр соответственно, а затем их совместно с помощью Console.WriteLine(). Вы можете использовать математические операции, которые вы узнали, чтобы извлечь начальные и конечные цифры.

Примечание.

По мере продолжения разработки вы обнаружите встроенные операции, которые могут автоматически применять форматирование к данным. На данный момент это отличная возможность укрепить то, что вы узнали до сих пор.

  1. Перейдите в начало инструкций Console.WriteLine().

  2. Создайте пустую строку кода над операторами Console.WriteLine().

  3. Чтобы инициализировать переменную, которая будет хранить ведущую цифру GPA, введите следующий код в пустой строке кода, созданной вами:

    int leadingDigit = (int) gradePointAverage;
    
    

    Обратите внимание, что для извлечения начальной цифры из десятичного разряда вы приведете его к целочисленном значению. Это простой и надежный метод, так как приведение дробного значения никогда не округляет результат. Значение, если GPA равно 2,99, приведение десятичного значения к int приведет к 2.

  4. Чтобы инициализировать переменную, которая будет хранить первые две цифры после десятичного разряда, введите следующий код:

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

    В первой половине этой операции вы перемещаете десятичное место справа и приведите его к целочислению. Во второй половине используется оставшаяся часть или модуло, оператор получает оставшуюся часть деления на 10, что изолирует последнюю цифру в целочисленном значении. Приведем пример:

    Предположим gradePointAverage = 2.994573 , что выполнение операции с этими значениями приведет к следующим шагам:

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

    А результирующее значение firstDigit равно 9.

    Затем вы примените ту же операцию, чтобы получить вторую цифру.

  5. В новой пустой строке кода введите следующий код:

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

    В этой строке вы перемещаете десятичные два места и используете оператор модуля для получения последней цифры.

  6. Чтобы исправить окончательные выходные данные GPA, обновите последнюю инструкцию Console.WriteLine() следующим образом:

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

Проверка работы

В этой задаче вы запустите код и убедитесь, что выходные данные верны.

  1. Убедитесь, что код аналогичен следующему:

    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. Чтобы запустить код и отобразить отформатированные выходные данные, нажмите кнопку "Выполнить".

  3. Чтобы убедиться, что код работает должным образом, сравните выходные данные приложения со следующими выходными данными:

    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
    

    Если код отображает различные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.

Внимание

Не забудьте удалить любой код, который вы написали до сих пор. Этот код будет построен в следующем упражнении.