Tracks
/
C#
C#
/
Ejercicios
/
La hiperinflación golpea a Hyperia
La hiperinflación golpea a Hyperia

La hiperinflación golpea a Hyperia

Ejercicio de aprendizaje

Introducción

Desbordamiento

El desbordamiento aritmético ocurre cuando un cálculo, como una operación aritmética o una conversión de tipo, da como resultado un valor mayor que la capacidad del tipo que lo recibe.

En estas circunstancias, las expresiones de tipo int y long, y sus equivalentes sin signo, dan la vuelta de manera silenciosa.

El comportamiento de los cálculos con enteros se puede modificar usando la palabra clave checked. Cuando ocurre un desbordamiento dentro de un bloque checked, se lanza una instancia de OverflowException.

int one = 1;
checked
{
    int expr = int.MaxValue + one;   // OverflowException is thrown
}

// or

int expr2 = checked(int.MaxValue + one);     // OverflowException is thrown

Las expresiones de tipo float y double toman un valor especial: infinito.

Las expresiones de tipo decimal lanzan una instancia de OverflowException.

Instrucciones

El país de Hyperia tiene sus problemas. En particular, la inflación está fuera de control. Te han traído en avión para que asumas un contrato en el banco central.

1. Imprime las denominaciones de los billetes

Para simplificar la administración interna, el banco central ha dividido cada denominación en partes: una base, que se mantiene relativamente sin cambios, y un multiplicador (el mismo para todas las denominaciones) que se puede cambiar cada año, cada semana o incluso cada día.

A la hora de imprimirlos, las denominaciones de los billetes son el producto de la base y el multiplicador.

Cuando se introdujo este sistema, el billete mínimo ya tenía una denominación de 10,000,000. La tabla de abajo muestra la situación (para las primeras 3 denominaciones) cuando se introdujo el sistema por primera vez. Las cosas han empeorado mucho desde entonces, y no solo cambia el multiplicador: también lo hace la base.

Base Multiplicador Denominación
10,000 1,000 10,000,000
50,000 1,000 50,000,000
100,000 1,000 100,000,000
... 1,000 ...

En resumen, esto significa que denominación = base * multiplicador.

Implementa el método CentralBank.DisplayDenomination(), que recibe la base y el multiplicador y devuelve un string con su producto (base * multiplicador). El string numérico que se devuelve no debe estar formateado.

Si la operación de multiplicación provoca un desbordamiento, se debe devolver el string "*** Too Big ***".

CentralBank.DisplayDenomination(10000L, 1000L);
// => "10000000"
CentralBank.DisplayDenomination(long.MaxValue / 2, 10000L);
// => "*** Too Big ***"

2. Muestra el PIB de Hyperia

El banco central usa el mismo enfoque de multiplicador para registrar el PIB internamente. Las estadísticas se registran en una denominación base y luego se escalan usando el multiplicador.

Implementa el método CentralBank.DisplayGDP(), que recibe el PIB base y el multiplicador actual y devuelve el PIB como un string.

Si el PIB no se puede calcular, se devuelve "*** Too Big ***".

CentralBank.DisplayGDP(555f, 10000f);
// => "5550000"
CentralBank.DisplayGDP(float.MaxValue / 2, 10000f);
// => "*** Too Big ***"

3. Muestra el salario del economista jefe

Tu jefe en el banco quiere asegurarse de que no haya problemas a la hora de pagar las nóminas.

Implementa el método CentralBank.DisplayChiefEconomistSalary(), que recibe un salario expresado en unidades base (como arriba) y un multiplicador, y devuelve un string con el producto.

Si el salario no se puede calcular, se devuelve "*** Much Too Big ***".

CentralBank.DisplayChiefEconomistSalary(555000m, 10000m);
// => "5550000000"
CentralBank.DisplayChiefEconomistSalary(555000m, decimal.MaxValue / 2L);
// => "*** Much Too Big ***"
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar La hiperinflación golpea a Hyperia?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.