Gaararo escribió:Lo tengo hecho de esta forma:
double capital_inicial, interes, anos_transcurridos = 1, capital_actual;
(Aqui se introducen los datos con cin...)
capital_actual = capital_inicial;
for (anos_transcurridos=1; capital_actual <= capital_inicial;)
{
capital_actual += capital_actual * interes;
cout << " " << n << " anios para que el capital sea el doble << '\n';
}
Todo esto en int main (no me dejan en otro sitio xD).
El problema es que cuando muestra los años siempre me sale 1.
Si en el código fuente has escrito el bucle for, exactamente igual que ne el post, el bucle está mal por dos razones, primero no has hecho que la variable anos_transcurridos se incremente en cada iteración, lo que provocaría que en el resultado solo te saliera 1, ya que las inicializado a 1 y esta no ha sido modificada en todo el bucle.
En segundo lugar la condición del for está mal también si quieres llegar a cuando el capital inicial sea el doble del actual te falta multiplicar por 2 el capital inicial en la condición, es decir capital_actual <= capital_inicial * 2.
Por último decirte que la variable anos transcurridos la deberías de inicializar a 0 y no a 1, ya que antes de cualquier cálculo que hagas sobre el interés estarías sobre el año 0, porque quieres saber cuantos años transcurren desde que con el capital inicial X, llego al doble de este, por lo que justo al inicio aún no ha pasado ningún año, ejemplo, supón un interés anual del 50% y tengo un capital inicial de 100€, ahora mismo tengo eso, es decir año 0, cuando calcule por primera vez el interés y se lo añada al interés actual es cuando habrá pasado un año, por lo que en el año 1 tendría 150€, por lo que la condición aun se sigue cumpliendo y transcurriría otro año más, entonces año 2, y tendría 225€, por lo que la condición ya no se cumple y tendrías que has tardado 2 años en duplicarlo. Si inicializas el año a 1, el resultado de antes habría quedado 3, cosa que no es cierta.
Saludos.