Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] C/C++ | Задание в книге по С (http://forum.oszone.net/showthread.php?t=69048)

Grekalov 27-07-2006 17:44 465578

C/C++ | Задание в книге по С
 
Доброго времени суток. Изучаю С по книге Дейтелов. С указателями, массивами еще не знаком. Не могу ничего придумать для решения этой задачи:
Некий клиент открыл в банке 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 27-07-2006 23:47 465672

наконец-то сделал, вот что получилось:
Код:

# 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;
}


Drongo 13-08-2006 13:58 471466

Привет Дружище!!! Я вот тоже изучаю С++ по книге Дейтелов, обоих. "Как программировать на С++" третье издание. Дошёл уже до 11 главы. Но представляешь, эту задачу не решал, всегда думая, что её решение просто. Прочитал твой вопрос и попробовал, и обломался! Не могу решить и всё! Сделал вывод, что каким бы задание не казалось лёгким нужно решать ВСЁ!!! Я вот что тебе предлагаю, поскольку мы оба только начали, давай с тобой будем производить обмен инфой, советами по этой книге! Что-то ты придумал, что-то я, можно даже сравнить решения некоторых задач! Конечно есть задания где я бессилен... Но для старта иной раз не хватает человека с которым можно посоветоваться, ведь две головы лучше! Скажи, как ты думал, когда решал эту задачу? Если надумаешь, пиши по адресу, обязательно отвечу: rembo88@yandex.ru


Время: 23:23.

Время: 23:23.
© OSzone.net 2001-