Możesz to przybliżyć na moim przykładzie ? Nie bardzo ogarniam ten przykład, który podałeś.
Mam jeszcze jeden problem, dlaczego tak jest że w pętli while operacja i++ wykonuje się tylko raz, a reszta operacji, "tyle ile potrzeba"?
Kod wygląda tak:
#include <iostream>
#include <cstdlib>
#include <cassert>
//using namespace std;
void napis (float k, float r, float R, int dzien, int miesiac, int rok);
void test_napis(void)
{
//assert(napis(123,0.01, 1, 10, 10, 2000 )=="Takiego kredytu to Ty nigdy nie splacisz!");
}
int main()
{
test_napis();
float wys_kredytu, stopa_pro, wys_splaty;
int dzien, miesiac, rok;
std::cout << "Podaj wysokosc kredytu: ";
std::cin >> wys_kredytu;
std::cout << "Podaj wysokosci rocznej stopy procentowej "<<std::endl;
std::cout << "(np dla 3 % wpisz '0.03'): ";
std::cin >> stopa_pro;
std::cout << "Podaj w jakiej kwocie rocznej bedziesz splacal kredyt: ";
std::cin >> wys_splaty;
std::cout << "Podaj date wziecia kredytu"<<std::endl;
std::cout << "(dd mm rrrr): ";
std::cin >> dzien >> miesiac >> rok;
napis (wys_kredytu, stopa_pro, wys_splaty, dzien, miesiac, rok);
return EXIT_SUCCESS;
}
void napis (float k, float r, float R, int dzien, int miesiac, int rok)
{
k = k*(1+r);
while(k > 0)
{
int i=0;
i++;
if(k - R > k/(1+r))
{
std::cout << "Takiego kredytu to Ty nigdy nie splacisz!";
exit(0);
}
if(k > 0) std::cout << "Zadluzenie na dzien: "<<dzien<<" "<< miesiac << " " << rok+i<<" wynosi: " << k << std::endl;
if(k >= R ) std::cout << "Placisz: " << R << std::endl<< std::endl;
else std::cout << "Placisz: " << k << std::endl<< std::endl;
k = k*(1+r) - R;
}
std::cout << "Splaciles wlasnie kredyt!" << std::endl<< std::endl;
}