Задача в книге по С

grekalov

Member
Joined
Mar 29, 2005
Messages
20
Reaction score
0
Age
45
Location
Украина
Доброго времени суток. Изучаю С по книге Дейтелов. С указателями, массивами еще не знаком. Не могу ничего придумать для решения этой задачи:
Некий клиент открыл в банке 5-ти процентный сберегательный счет на сумму 1000$. Предполагая, что вся прибыль остается на депозите счета, расчитайте и выведите сумму денег на счете на конец каждого года за 10 лет. Для определения этих сумм используйте формулу: a= p * (1 + r)^n, где p - первоначально вложенная сумма; r - годовая процентная ставка; n - число лет; a - сумма на счете на конец n-го года. Сам код вот:
# include <stdio.h>
# include <math.h>
main ()
{
int year;
double amount, principal = 1000.0, rate = 0.05;
printf ("%4s%21s\n", "Year", "Amount on deposit");
for (year = 1; year <= 10; year++)
{
amount = principal * pow (1.0 + rate, year);
printf ("%4d%21.2f\n", year, amount);
}
return 0;
}

Изминить программу так, чтобы для вычисления сложных процентов она использовала только целые числа. (Подсказка: обрабатывайте все денежные суммы в виде целочисленных значений центов. Затем "разбейте" результат на доллары и центы, используя для этого соответственно операции деления и взятия модуля. Вставить десятичную точку). Натолкните на мысль, как выполнить эту задачку?

Как пытался сделать:
Вот этот код на пятом шаге показывает уже неверные данные:
main ()
{
int year;
long amount, otr = 100, principal = 1000, rate = 5;
printf ("%4s%21s\n", "Year", "Amount on deposit");
for (year = 1; year <= 10; year++)
{

amount = principal * (pow (100 + rate, year)/otr);
otr *= 100;
printf ("%4d%21ld\n", year, amount);
}
return 0;
}
Правда выводит только доллары, до центов не дошел еще.
 

grekalov

Member
Joined
Mar 29, 2005
Messages
20
Reaction score
0
Age
45
Location
Украина
наконец-то сделал, вот что получилось:
# include <stdio.h>
# include <math.h>

int main ()
{
int year;
long tochn = 100;
int count;
long principal = 100000;
int rate = 5;
long amount;
printf ("%4s%21s\n", "Year", "Amount on deposit");

for (year = 1; year <= 10; year++)
{
amount = principal * (pow (100 + rate, year) / pow (tochn, year));
printf ("%4d%21ld%1s%2ld\n", year, amount/100,".", amount % 100);


}


return 0;
}
 
Last edited by a moderator:
Top