Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vladisalv3v
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 3
#1

Расчет сложного процента - C++

27.01.2013, 02:01. Просмотров 1043. Ответов 14
Метки нет (Все метки)

Ребят, подскажите почему не получается правильно подсчитать процент в конце каждого года?
Суть задачи: вносим депозит в банк 1000$ под 5% годовых.
Доход остается на депозите, нужно подсчитать сумму денег после каждого года на протяжении 10 лет.
Желательно посчитать с помощью структуры "for"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    //amount - сумма на депозите к концу года
    //principal - первоначальный вклад
 
    double amount, principal = 1000.0, rate = 0.5;
 
    cout  << "year" << "Amount" << endl;
 
    for (int year = 1; year <= 10; year++) {
       amount = principal * pow(1.0 + rate, year);
       cout << year << amount << endl;}
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 02:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расчет сложного процента (C++):

Расчёт сложного процента - C++
Программа для расчёта процента по вкладу. В ней появились новые для меня операторы такие как : setw,pow. Что они обозначают? И ещё чем...

В цикле do while реализовать подсчёт сложного процента с ежемесячной капитализацией по банковскому вкладу - C++
Два друга решили копить деньги. Первоначальный вклад обоих составил 100$ . Кузьма решил каждый месяц пополнять вклад на 10% от...

Расчет сложного уравнения - C++
Здравствуйте. Очень нужна помощь. Дали такое задание: 16. Рассчитать величину Z за формулой: ...

Расчет сумм в формуле и расчет xi должны быть оформлены в виде отдельных функций. - C++
День добрый товарищи специалисты, помогите пожалуйста с примером m=((1/n)*\sum_{i=1}^{n}{x}_{i}){}^{2}-\sum_{i=1}^{n}{x}_{i} ,n=5 ф-ция...

printf - знак процента на экран - C++
#include &lt;iostream&gt; int main() { int n, m; scanf(&quot;%d%d&quot;, &amp;n, &amp;m); int* a = (int*) calloc(n,sizeof(int)); for (int i =...

Функция вычисления процента от числа х - C++
Помогите пожалуйста с задачкой;( Банк предлагает договор сроком на 12 месяцев, соответственно которому физическим лицам начисляется...

14
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,047
27.01.2013, 02:08 #2
во первых
Цитата Сообщение от Vladisalv3v Посмотреть сообщение
5%
это не 0.5 а 0.05
во вторых
Цитата Сообщение от Vladisalv3v Посмотреть сообщение
for (int year = 1; year <= 10; year++) {
amount = principal * pow(1.0 + rate, year);
cout << year << amount << endl;}
ты как то больно сложно делаешь
C++
1
2
3
for (int year = 1; year <= 10; year++) {
          principal = principal *(1.0 + rate);
           cout << year << principal << endl;}
1
Vladisalv3v
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 3
27.01.2013, 02:25  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
во первых

это не 0.5 а 0.05
во вторых

ты как то больно сложно делаешь
C++
1
2
3
for (int year = 1; year <= 10; year++) {
          principal = principal *(1.0 + rate);
           cout << year << principal << endl;}


понял, спасибо большое!

Добавлено через 14 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
во первых

это не 0.5 а 0.05
во вторых

ты как то больно сложно делаешь
C++
1
2
3
for (int year = 1; year <= 10; year++) {
          principal = principal *(1.0 + rate);
           cout << year << principal << endl;}
а ты пробывал запустить?
У меня такэже бред выводит.
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,047
27.01.2013, 02:38 #4
Цитата Сообщение от Vladisalv3v Посмотреть сообщение
а ты пробывал запустить?
нет конечно
Цитата Сообщение от Vladisalv3v Посмотреть сообщение
У меня такэже бред выводит.
а в чем бред то заключается?
может пробел виноват
C++
1
cout << year <<" "<< principal << endl;
а то числа то подряд выводились
11050
21102,5
0
eisenheim
18 / 8 / 1
Регистрация: 06.06.2011
Сообщений: 268
27.01.2013, 03:07 #5
Сам смотри! Ты увеличиваешь 'amount':
C++
1
amount = principal * pow(1.0 + rate, year);
При этом, 'principal' остаётся неизменным. И ты его же и выводишь:
C++
1
cout << year << principal << endl;
А он ведь, не меняется! Меняется у тебя 'amount'. Вот его и нужно выводить:
C++
1
cout << year <<" "<< amount << endl;
Вуаля
1
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,047
27.01.2013, 09:38 #6
eisenheim,
ты програмку то из двух постов коментируешь?
Цитата Сообщение от eisenheim Посмотреть сообщение
Сам смотри! Ты увеличиваешь 'amount':
Цитата Сообщение от eisenheim Посмотреть сообщение
При этом, 'principal' остаётся неизменным. И ты его же и выводишь:
здесь
Цитата Сообщение от Vladisalv3v Посмотреть сообщение
for (int year = 1; year <= 10; year++) {
* * * *amount = principal * pow(1.0 + rate, year);
* * * *cout << year << amount << endl;}
как видишь меняется и выводится amount
а здесь


Цитата Сообщение от ValeryS Посмотреть сообщение
for (int year = 1; year <= 10; year++) {
* * * * * principal = principal *(1.0 + rate);
* * * * * *cout << year << principal << endl;}
а здесь меняется и выводится principal никаким amount не пахнет
0
Vladisalv3v
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 3
02.02.2013, 01:47  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
нет конечно

а в чем бред то заключается?
может пробел виноват
C++
1
cout << year <<" "<< principal << endl;
а то числа то подряд выводились
11050
21102,5

можешь объяснит как этот символ << " " << поменял всю суть вывода.
С ним все получается.
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,047
02.02.2013, 02:51 #8
Цитата Сообщение от Vladisalv3v Посмотреть сообщение
можешь объяснит как этот символ << " " << поменял всю суть вывода.
выводишь пробел
по шагам
Цитата Сообщение от ValeryS Посмотреть сообщение
cout << year <<" "<< principal << endl;
<< year выводим год
<<" " выводим пробел
<< principal выводим значение
<< endl выводим перевод строки
0
vallinor
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 21
07.05.2015, 08:55 #9
Добрый день! Подскажите пожалуйста, осваиваю С++ по книге Дейтелов. Сегодня столкнулся с такой задачей
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Расчет сложного процента
#include <cstdlib>  //функция управления процессом
#include <iostream> //функция ввода вывода
#include <iomanip>  //функция работы с форматированием вывода
#include <math.h>     //библиотека сложных математических операций
 
using namespace std;    //использование в программе команд библиотеки iostream
 
main()  //главная функция
{   //начало программы
    
    double amont, principal=1000.0, rate=0.05;   //задаем переменные
    
    setlocale(LC_ALL,"RUSSIAN");    //локаль параметров - вводи в программу русский язык
    cout <<"Год " <<setw(21) <<"Сумма депозита \n"; //вывод на экран
    
    for(int year=1; year<=10; year++)   //указываем условия цикла
        amont=principal*pow(1.0+rate, year);    //расчет депозита
        cout <<setw(3)<< year <<setiosflags(ios::fixed | ios::showpoint)
             <<setw(21)<<setprecision(2)<<amont<<endl;  //вывод на экран с форматированием
    system("pause");    //приостановка процесса программы
    return 0;   //указывает на успешное завершение программы
}   //конец программы
выдаются ошибки
In function 'int main()'::
name lookup of 'year' changed for ISO 'for' scoping [-fpermissive]
(if you use '-fpermissive' G++ will accept your code)
E:\MyDocuments\С++\31\Makefile.win [Build Error] [Objects/MingW/main.o] Error 1

Подскажите пожалуйста, что может быть не так? (Сорри что спрашиваю в этой теме - просто чтобы не плодить кучу одинаковых тем)
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,047
07.05.2015, 09:03 #10
Цитата Сообщение от vallinor Посмотреть сообщение
что может быть не так?
а он тебе ясно пишет
Цитата Сообщение от vallinor Посмотреть сообщение
In function 'int main()'::
Цитата Сообщение от vallinor Посмотреть сообщение
main() *//главная функция
C++
1
int main()//!!!
0
vallinor
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 21
07.05.2015, 10:22 #11
Сменил на int main() - все равно ошибки те же.

Красным выделяется строка с этим кодом

C++
1
cout <<setw(3)<< year <<setiosflags(ios::fixed | ios::showpoint)
0
Gr1f0nn
241 / 161 / 74
Регистрация: 30.09.2012
Сообщений: 688
07.05.2015, 15:04 #12
vallinor, в вашем варианте область видимости переменной year ограничивалась циклом for, поэтому при попытке вывести ее результат ниже, вам выдавалась ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Расчет сложного процента
#include <cstdlib>  //функция управления процессом
#include <iostream> //функция ввода вывода
#include <iomanip>  //функция работы с форматированием вывода
#include <math.h>     //библиотека сложных математических операций
 
using namespace std;    //использование в программе команд библиотеки iostream
 
int main()  //главная функция
{   //начало программы
 
    double amont, principal=1000.0, rate=0.05;   //задаем переменные
    int year = 1;  //<<<<<--------- !!!!!!!
 
    setlocale(LC_ALL,"RUSSIAN");    //локаль параметров - вводи в программу русский язык
    cout <<"Год " <<setw(21) <<"Сумма депозита \n"; //вывод на экран
 
    for(; year<=10; year++)   //указываем условия цикла
        amont=principal*pow(1.0+rate, year);    //расчет депозита
    cout <<setw(3)<< year <<setiosflags(ios::fixed | ios::showpoint)
        <<setw(21)<<setprecision(2)<<amont<<endl;  //вывод на экран с форматированием
    system("pause");    //приостановка процесса программы
    return 0;   //указывает на успешное завершение программы
}   //конец программы

Или выводите результат после каждой итерации:

C++
1
2
3
4
5
6
for(int year = 1; year<=10; year++)   //указываем условия цикла
{
        amont=principal*pow(1.0+rate, year);    //расчет депозита
    cout <<setw(3)<< year <<setiosflags(ios::fixed | ios::showpoint)
        <<setw(21)<<setprecision(2)<<amont<<endl;  //вывод на экран с форматированием
}
1
vallinor
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 21
07.05.2015, 16:47 #13
Большое спасибо. По вашему первому варианту выводил почему то 11 год и Депозит только а вот по второму варианту все прошло как надо.
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,047
08.05.2015, 00:34 #14
а не пробовал сам программы писать?
или по жизни
Цитата Сообщение от vallinor Посмотреть сообщение
Большое спасибо.
????
обучение есть осознание своих ошибок,а не поиск чужих
скажи по чесноку нашел ошибки у себя?
или скинул кодGr1f0nn, чтобы сдать преподу?
0
vallinor
2 / 2 / 0
Регистрация: 20.04.2015
Сообщений: 21
08.05.2015, 06:02 #15
ValeryS, эммм....я как бы на самостоятельном обучении - Самоучитель Дейтелов штудирую с недавнего времени. А у себя ошибку нашел - скобки блин не поставил для цикла for.
0
08.05.2015, 06:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2015, 06:02
Привет! Вот еще темы с ответами:

Написание программы расчета процента побед - C++
округление не правильное

какая функция знака процента в этом коде? - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); int x, y, z, a, b, c; ...

Создание сложного калькулятора на С++ - C++
Суть проблемы в том что требуется создать калькулятор где мы будем писать математическую функцию строкой, и потом компилировать exe файл с...

Разработать программу для определения процента повторения заданного слова в тексте - C++
люди помогите решить ! Завтра экзамен надо сдать лабу. Вот задача Разработать программу для определения процента повторения заданного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru