Ejercicio: Formato de la salida decimal

Completado

En este ejercicio, calculará el GPA final y modificará la salida de la consola para lograr el formato de informe deseado. El GPA es igual a la suma del total de puntos de calificación dividida por la suma de las horas de créditos totales.

Cálculo del GPA final

  1. En el Editor de .NET, busque las instrucciones Console.WriteLine() que se usan para mostrar la información del curso.

  2. Quite el código siguiente del ejercicio anterior:

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

    Puesto que ha comprobado que los valores son correctos, esta línea ya no es necesaria.

  3. Cree una línea de código en blanco encima de las instrucciones Console.WriteLine().

  4. En la línea de código en blanco que creó, para inicializar una variable que almacene el GPA final, escriba el código siguiente:

    decimal gradePointAverage = totalGradePoints/totalCreditHours;
    
    
  5. Dedique un momento a considerar los tipos de datos que va a dividir.

    Si quiere que el resultado de un cálculo de división sea un valor decimal, el dividendo, el divisor, o ambos, deben ser de tipo decimal. Al usar variables enteras en el cálculo, debe usar el operador de conversión para convertir temporalmente un entero en un decimal.

  6. Para recuperar un valor decimal de la división, actualice el código de la siguiente manera:

    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    
  7. Vaya a la última instrucción Console.WriteLine() y cree una nueva línea de código en blanco después de la última instrucción.

  8. Para mostrar el GPA final, escriba el código siguiente:

    Console.WriteLine($"Final GPA: {gradePointAverage}");
    
  9. Seleccione Ejecutar para ver los resultados.

    Compare la salida de la aplicación con la siguiente salida:

    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
    

Aplicación de formato a la salida decimal

Es posible que haya observado que el resultado decimal contiene muchos más dígitos que un GPA estándar. En esta tarea, manipulará el valor de GPA decimal para que solo se muestren tres dígitos.

A la larga, querrá mostrar el primer dígito del GPA, un separador decimal, seguido de los dos primeros dígitos después del decimal. Para conseguir este formato, utilice variables para almacenar el primer y último dígito, e imprímalos juntos mediante Console.WriteLine(). Para extraer el primero y último dígito, puede usar las operaciones matemáticas que ha aprendido.

Nota:

A lo largo de su vida como desarrollador, descubrirá operaciones integradas que pueden aplicar automáticamente formato a los datos. Por ahora, esta es una magnífica oportunidad para solidificar lo que ha aprendido hasta el momento.

  1. Vaya a la parte superior de las instrucciones Console.WriteLine().

  2. Cree una línea de código en blanco encima de las instrucciones Console.WriteLine().

  3. En la línea de código en blanco que creó, para inicializar una variable que almacene el dígito inicial del GPA, escriba el código siguiente:

    int leadingDigit = (int) gradePointAverage;
    
    

    Observe que para extraer el dígito inicial del decimal, lo va a convertir en un valor entero. Se trata de un método sencillo y confiable porque la conversión de un valor fraccionado nunca redondeará el resultado. Es decir, si el GPA es 2,99, convertir el valor decimal en un entero dará como resultado 2.

  4. Para inicializar una variable que almacene los dos primeros dígitos después del decimal, escriba el código siguiente:

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

    En la primera mitad de esta operación, se mueve el decimal un lugar a la derecha y se convierte en entero. En la segunda mitad, se usa el operador resto, o módulo, para obtener el resto de la división entre 10, lo que aísla el último dígito del entero. Este es un ejemplo:

    Suponga que es gradePointAverage = 2.994573. Luego, al realizar la operación con estos valores el resultado se generarían los siguientes pasos:

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

    Y el valor resultante de firstDigit es 9.

    Después, aplicará la misma operación para recuperar el segundo dígito.

  5. En la nueva línea de código en blanco, escriba el siguiente código:

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

    En esta línea, el decimal se mueve dos posiciones y se usa el operador de módulo para recuperar el último dígito.

  6. Para corregir la salida final del GPA, actualice la última instrucción Console.WriteLine() de la siguiente manera:

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

Comprobación del trabajo

En esta tarea, ejecutará el código y comprobará que la salida es correcta.

  1. Compruebe que el código es similar al siguiente:

    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. Para ejecutar el código y mostrar la salida con formato, seleccione Ejecutar.

  3. Para comprobar que el código funciona según lo previsto, compare la salida de la aplicación con la salida siguiente:

    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 el código muestra resultados diferentes, deberá revisarlo para encontrar el error y realizar las actualizaciones correspondientes. Vuelva a ejecutar el código para ver si ha corregido el problema. Continúe actualizando y ejecutando el código hasta que genere el resultado esperado.

Importante

Asegúrese de no eliminar el código que haya escrito hasta ahora, Lo usará en el ejercicio siguiente.