Ciao a tutti, sono alle prese con un problema insito nel C++, ovvero visualizzare valori finanziari, che se impostati come double, in programmi sull'interesse composito ad esempio, potrebbero portare a valori errati per via dell'arrotondamento (ma non c'è bisogno che io stia qui a spiegarlo a voi ), per farla breve insomma, ho modificato un programma per acquisire in input il valore intero e quello decimale di una cifra finanziaria, ma sottoforma di interi, e creato una tabella per mostrare l'interesse anno dopo anno, in percentuali del 5-6-7-8-9-10%, ora dopo parecchie prove, sono bloccato per i seguenti problemi:
1) Quando devo mostrare in output i cent, i numeri a singola cifra non presentano lo zero, come potrebbe essere ad esempio 05 o 09, questo scompone la simmetria della griglia, come potrei ovviare ?
2) Quando inserisco una cifra in cent, superiore a 70, per via dei calcoli essa supererà i 99, e in questo caso dovrebbe aumentare la parte intera di un ipotetico dollaro di 1 e ripartire essa stessa da 0, ma nonostante i miei if per cercare di fare questa cosa, al secondo raggiungimento dei 99 gli if non fanno più il loro dovere poichè dovrei implementare una struttura iterativa, ma non capisco come controllare il ciclo per non finire in un loop
Vi posto il codice e resto in attesa per dare altre delucidazioni, in quanto sono certo che la complessità di ciò che ho spiegato (Per via della mia scarsa dote di sintesi) lascerà quancuno cosi hahahaha
Ringrazio per la pazienza
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
cout << "Questo programma calcola l'interesse maturato in 10 anni, ad un tasso variabile tra il 5% e il 10%.\n" << endl;
int dollari;
int cent;
cout << "Inserire la parte intera della cifra: ";
cin >> dollari;
cout << "Inserire la parte decimale della cifra: ";
cin >> cent;
cout << endl;
while (cent < 0 || cent > 99)
{
cout << "Errore. Inserire un valore compreso tra 0 e 99.\n";
cout << "Inserire la parte decimale della cifra: ";
cin >> cent;
cout << endl;
}
double tasso5x100 = .05;
double tasso6x100 = .06;
double tasso7x100 = .07;
double tasso8x100 = .08;
double tasso9x100 = .09;
double tasso10x100 = .10;
cout << "Anno" << setw(19) << "Tasso 5%" << setw(19) << "Tasso 6%" << setw(19) << "Tasso 7%"
<< setw(19) << "Tasso 8%" << setw(19) << "Tasso 9%" << setw(20) << "Tasso 10%" << endl;
for (int anno = 1; anno <= 10; anno++)
{
int dollari5;
int dollari6;
int dollari7;
int dollari8;
int dollari9;
int dollari10;
int cent5;
int cent6;
int cent7;
int cent8;
int cent9;
int cent10;
dollari5 = dollari * pow(1.0 + tasso5x100, anno);
dollari6 = dollari * pow(1.0 + tasso6x100, anno);
dollari7 = dollari * pow(1.0 + tasso7x100, anno);
dollari8 = dollari * pow(1.0 + tasso8x100, anno);
dollari9 = dollari * pow(1.0 + tasso9x100, anno);
dollari10 = dollari * pow(1.0 + tasso10x100, anno);
cent5 = cent * pow(1.0 + tasso5x100, anno);
cent6 = cent * pow(1.0 + tasso6x100, anno);
cent7 = cent * pow(1.0 + tasso7x100, anno);
cent8 = cent * pow(1.0 + tasso8x100, anno);
cent9 = cent * pow(1.0 + tasso9x100, anno);
cent10 = cent * pow(1.0 + tasso10x100, anno);
if (cent5 >= 100)
{
cent5 -= 100;
dollari5 += 1;
}
if (cent6 >= 100)
{
cent6 -= 100;
dollari6 += 1;
}
if (cent7 >= 100)
{
cent7 -= 100;
dollari7 += 1;
}
if (cent8 >= 100)
{
cent8 -= 100;
dollari8 += 1;
}
if (cent9 >= 100)
{
cent9 -= 100;
dollari9 += 1;
}
if (cent10 >= 100)
{
cent10 -= 100;
dollari10 += 1;
}
cout << setw(4) << anno << setw(16) << dollari5 << "." << cent5 << setw(16)
<< dollari6 << "." << cent6 << setw(16) << dollari7 << "." << cent7 << setw(16)
<< dollari8 << "." << cent8 << setw(16) << dollari9 << "." << cent9 << setw(17)
<< dollari10 << "." << cent10 << endl;
}
return 0;
}