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

grekalov

Member
Joined
Mar 29, 2005
Messages
20
Reaction score
0
Доброго времени суток. Изучаю С по книге Дейтелов. С указателями, массивами еще не знаком. Не могу ничего придумать для решения этой задачи:
Некий клиент открыл в банке 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
наконец-то сделал, вот что получилось:
# 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:

royon

New member
Joined
Jun 27, 2010
Messages
1
Reaction score
0
I think it's a bit weird that the problem is in Russian, but if you're having trouble with it, maybe we can help break it down. Can you post the problem and we'll see if we can find a solution together?
 
Top