Tracks
/
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 se usan para ejecutar cierta 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 está el bucle for each, que aparecerá más adelante, en otro concepto.

Sintaxis general

El for loop consta de un encabezado y un bloque de código que contiene el cuerpo del bucle encerrado entre llaves. El encabezado consta de 3 componentes separados por punto y coma ;: la sentencia 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 comience el bucle.
  • El componente condition debe ser una expresión que se evalúe como un boolean y que controle cuándo debe detenerse el bucle. El código 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 la comprobación de su condition sea true. El fragmento de código de abajo muestra cómo transformar un for en un while loop.

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

Interludio: incrementos y decrementos

Cuando trabajas con bucles, a menudo necesitas sumar 1 o restar 1 a una variable contador que lleva la cuenta de las iteraciones. Esto es tan común que las acciones de incremento y decremento tienen operadores especiales: ++ y --.

Existen en una forma prefija y una forma posfija. La versión prefija cambia la variable antes de usarla en la sentencia, y la versión posfija, 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 configura una variable contador, la condición comprueba si el bucle debe continuar o detenerse, y el componente posterior 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

Por lo general, es más fácil entender la lógica del bucle cuando el uso de break y continue se reduce al mínimo o se evita por completo. Ambas palabras clave se saltan ciertas secciones del código y a menudo hacen que sea más difícil seguirle la pista.

Instrucciones

En este ejercicio vas a trabajar con cuentas de ahorro. Cada año, el saldo de tu cuenta de ahorro se actualiza según su tasa de interés. La tasa de interés que te da tu banco depende de la cantidad de dinero que tengas 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 tratará el saldo y su tasa de interés.

1. Calcula la tasa de interés

Implementa la función interest_rate para calcular la tasa 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 la tasa 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 la cantidad mínima 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 que se devuelve es un int.

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

¿Todo 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.