Pessoal,
Gostaria de saber se alguém poderia me ajudar com os seguintes algoritmos.
Descrição
Uma pessoa aplicou seu capital a juros e deseja saber, trimestralmente, a posição de seu investimento C inicial. Chamando de i a taxa de juros do trimestre,
escreva uma tabela que, para cada trimestre, dê o rendimento auferido e o saldo acumulado durante um período de X anos, supondo-se que nenhuma retirada tenha sido feita.
Formato de entrada
Dois números de ponto flutuante separados por espaço contendo o investimento inicial, a taxa de juros trimestral e um inteiro indicando o período em anos.
Formato de saída
Uma tabela, cada linha é escrita na forma:
Rendimento: R Montante: M
onde R e M são números de ponto flutuante formatado com duas casas decimais.
Exemplos de:
Entrada
1500 0.02 2
Saída
Rendimento: 30.00 Montante: 1530.00 Rendimento: 30.60 Montante: 1560.60 Rendimento: 31.21 Montante: 1591.81 Rendimento: 31.84 Montante: 1623.65 Rendimento: 32.47 Montante: 1656.12 Rendimento: 33.12 Montante: 1689.24 Rendimento: 33.78 Montante: 1723.03 Rendimento: 34.46 Montante: 1757.49
O algoritmo que eu fiz foi:
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
float principal;
float taxa;
int meses;
int trimestre;
float anterior = 0.0;
float montante;
float juros;
scanf("%f",&principal);
scanf("%f",&taxa);
scanf("%d",&meses);
trimestre = meses*4;
for(int i = 1; i <= trimestre; i++){
montante = principal * pow((1 + taxa), i);
juros = montante - principal - anterior;
anterior += juros;
//printf("Mês: %d - Montante: %f - Juros %f\n", i, montante, juros);
printf("Rendimento: %.2f Montante: %.2f\n",juros,montante);
}
}
Porém está apresentando o seguinte erro: Esse problema pode gerar um típico caso de erro de precisão da representação do ponto flutuante. Nesse caso, você tem algumas alternativas. Uma delas é usar o tipo mais preciso da sua linguagem, double, por exemplo. Mas ainda assim, você só irá reduzir o erro, mas ainda o terá. Outra possibilidade é trabalhar com inteiros. Por exemplo, se você ler o número 12.35, ao invés de ler em uma única variável, leia em duas variáveis, um inteiro para representar o 12 e outro para representar o 35. Faça as operações de divisão e multiplicação em cima desses inteiros. E cuidado com o resultado da operação, pois ele pode gerar outro número fracionário e, portanto, o mesmo raciocínio deve ser aplicado.