Rutas
/
C++
C++
/
Ejercicios
/
El interés es interesante
El interés es interesante

El interés es interesante

Ejercicio de aprendizaje

Introducción

Bucles

Los bucles sirven para ejecutar una misma lógica de forma repetida. Los dos tipos más comunes son el while loop (bucle indefinido) y el for loop (bucle definido o contado). También existe el bucle for each, que aparecerá en un concepto posterior.

Sintaxis general

El for loop consta de una cabecera y un bloque de código que contiene el cuerpo del bucle encerrado entre llaves. La cabecera consta de 3 componentes separados por puntos y coma ;: la instrucción de inicialización, la condición y otra expresión. Cualquiera de ellos puede estar vacío.

for (init_statement; condition; expression) {
  some_statement;
}
  • El componente init_statement es código que se ejecuta una sola vez antes de que empiece el bucle.
  • El componente condition debe ser una expresión que se evalúe a un boolean y que controle cuándo debe detenerse el bucle. El código que hay dentro del bucle se ejecutará mientras esta condición se evalúe como true. En cuanto esta expresión se evalúe como false, no se ejecutará ninguna iteración más del bucle.
  • El componente expression es código que se ejecuta al final de cada iteración.

El while loop ejecuta su cuerpo mientras su comprobación de la condition sea true. El fragmento de código siguiente muestra cómo transformar un for en un while loop.

init_statement;
while(condition) {
    some_statement;
    expression;
}

Interludio: incrementos y decrementos

Cuando se trabaja con bucles, a menudo hay que sumar o restar 1 a una variable contador que lleva la cuenta de las iteraciones. Esto es tan habitual que las acciones de incremento y decremento tienen operadores propios: ++ y --.

Existen en una forma prefija y una forma postfija. La forma prefija modifica la variable antes de que se use en la instrucción, y la postfija, después. Lo más probable es que la mayoría de las veces quieras la versión prefija.

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

Bucles for: un ejemplo

El componente de inicialización normalmente prepara una variable contador, la condición comprueba si el bucle debe continuar o detenerse, y el componente de incremento normalmente incrementa el contador al final de cada repetición.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

Este bucle sumará los números del 1 al 9 (incluido el 9).

Break y continue

Dentro del cuerpo de un bucle, puedes usar la palabra clave break para detener por completo la ejecución del bucle:

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

En cambio, la palabra clave continue solo detiene la ejecución de la iteración actual y continúa con la siguiente:

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (i%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12
Note

Normalmente es más fácil entender la lógica del bucle cuando se minimiza o se evita por completo el uso de break y continue. Ambas palabras clave se saltan ciertas secciones del código y a menudo hacen que sea más difícil seguirlo.

Instrucciones

En este ejercicio vas a trabajar con cuentas de ahorros. Cada año, el saldo de tu cuenta de ahorros se actualiza según su tipo de interés. El tipo de interés que te da tu banco depende de la cantidad de dinero que haya en tu cuenta (su saldo):

  • 3.213% para un saldo menor que 0 dólares (el saldo se vuelve más negativo).
  • 0.5% para un saldo mayor o igual que 0 dólares y menor que 1000 dólares.
  • 1.621% para un saldo mayor o igual que 1000 dólares y menor que 5000 dólares.
  • 2.475% para un saldo mayor o igual que 5000 dólares.

Tienes cuatro tareas, y cada una de ellas trabajará con el saldo y su tipo de interés.

1. Calcula el tipo de interés

Implementa la función interest_rate para calcular el tipo de interés a partir del saldo especificado:

interest_rate(200.75);
// => 0.5

2. Calcula el interés

Implementa la función yearly_interest para calcular el interés a partir del saldo especificado:

yearly_interest(200.75):
// => 1.003750

3. Calcula la actualización anual del saldo

Implementa la función annual_balance_update para calcular la actualización anual del saldo, teniendo en cuenta el tipo de interés:

annual_balance_update(200.75);
// => 201.75375

4. Calcula los años que faltan para alcanzar el saldo deseado

Implementa la función years_until_desired_balance para calcular el número mínimo de años necesarios para alcanzar el saldo deseado, teniendo en cuenta que cada año se suma el interés al saldo. Esto significa que el saldo después de un año es: saldo inicial + interés del saldo inicial. El saldo después del segundo año es el saldo después de un año + el interés del saldo después de un año. Y así sucesivamente, hasta que el saldo del año actual sea mayor o igual que el saldo objetivo.

double balance {200.75};
double targetBalance {214.88};
years_until_desired_balance(balance, targetBalance)
// => 14

Ten en cuenta que el valor devuelto es un int.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C++ Exercism

¿Listo para empezar El interés es interesante?

Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.