Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите изменить код С, С++, Изменить возможность ввода лет 
:(
    Опции темы
tisit
  Дата 25.1.2015, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.12.2014

Репутация: нет
Всего: нет



найти сумму ипотечного кредита, которую надо вернуть в течении 10 лет, если первоначальная сумма выданная клиенту, S и начисляется P% годовых каждый раз от новой суммы. прога есть, как сделать так чтобы вместо 10 лет можно было записывать любое кол-во лет. помогите
Код C
Код

#pragma hdrstop
#include <stdio.h>
#include<math.h>
#include <conio.h>
int main()
{  
    float i,u, h=0;
    float sum,percentage,s,e;
 
    printf("vvedite sum: ");
    scanf("%f",&sum);
 
    s=sum;   
    e=sum/120;  
 
    printf("\nvvedite procenti: ");
    scanf("%f",&percentage);
 
    for(i=1;i<=120;i++)
    {
        u=(sum * (percentage/100/12));     
        sum-=e;
        h+=u;  
    }
    e=(s+h)/120;
    printf("\nsum ipoteci: %f pereplata: %f  e=%f", s+h, h, e);
    getch();
    return 0;
}


Добавлено через 38 секунд
за 10 лет я взял 120 месяцев
PM MAIL   Вверх
konshyn
Дата 26.1.2015, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 19.9.2013

Репутация: нет
Всего: нет



Код

#include <stdio.h>
#include <math.h>

int main() {
    double years = 0.0;
    double percentages = 0.0;
    double sum = 0.0;

    printf("sum = ?\n");
    scanf("%lf", &sum);
    printf("years = ?\n");
    scanf("%lf", &years);
    printf("percentages = ?\n");
    scanf("%lf", &percentages);

    double finish_sum = sum * pow(1 + percentages / 100, years);
    printf("Finish sum = %lf\n", finish_sum);
    return 0;   
}



--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
borisbn
Дата 26.1.2015, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



konshyn, неа. Неверно. Т.к.
Цитата(tisit @  25.1.2015,  18:34 Найти цитируемый пост)
P% годовых каждый раз от новой суммы

а у тебя всегда считается от изначальной.
Вот, вроде, правильный код:
Код
#include <stdio.h>
#include <math.h>

int main() {
    double years = 0.0;
    double percentages = 0.0;
    double sum = 0.0;
    double remain_sum;
    double sum_percents = 0.0;
    double month_sum;
    double month_percents;
    int i;
    printf("sum = ?");
    scanf("%lf", & sum);
    printf("\nyears = ?");
    scanf("%lf", & years);
    printf("\npercentages = ?");
    scanf("%lf", & percentages);
    remain_sum = sum;
    month_sum = sum / years / 12.0;
    for ( i = 0; i < (int)years * 12; i++ ) {
     month_percents = remain_sum * percentages / 100.0 / 12.0;
     sum_percents += month_percents;
     remain_sum -= month_sum;
    }
    printf("\nsum_percents = %lf. Whole sum = %lf\n", sum_percents, sum + sum_percents );
    return 0;   
}


http://ideone.com/rZ9Ty4

Это сообщение отредактировал(а) borisbn - 26.1.2015, 19:03


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
konshyn
Дата 26.1.2015, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 19.9.2013

Репутация: нет
Всего: нет



Цитата(borisbn @  26.1.2015,  19:03 Найти цитируемый пост)
а у тебя всегда считается от изначальной.

хотя бы проверял, как и мой код, так и свой, прежде, чем писать.

у меня правильно считает - от текущей суммы (по годам, а не месяцам - ниже объясню почему).
у тебя еще в строчке ошибка
Код

...
remain_sum -= month_sum;
...

как минимум, нужно складывать.

а теперь самое главное: учитывая точность вычислений на ЭВМ, в твоем коде слишком много происходит "потерь" тысячных, десятитысечных и т.д.
и при вводе таких параметров:
sum = 1000000000
years = 10
percentages = 10
у тебя результат sum+sum_persents =2495833333.333330

вручную легко получить результат  = 2593742460.1  (такой же ответ и в моем коде)

Это сообщение отредактировал(а) konshyn - 26.1.2015, 20:47


--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
borisbn
Дата 27.1.2015, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(konshyn @  26.1.2015,  20:46 Найти цитируемый пост)
хотя бы проверял, как и мой код, так и свой

Проверял. И твой и свой.
Цитата(konshyn @  26.1.2015,  20:46 Найти цитируемый пост)
у меня правильно считает - от текущей суммы (по годам, а не месяцам - ниже объясню почему).

Не суть важно - по годам или по месяцам - у тебя проценты накручиваются не на остаток, а на то, что человек уже заплатил.
Цитата(konshyn @  26.1.2015,  20:46 Найти цитируемый пост)
как минимум, нужно складывать.

Что с чем складывать ? Я рассчитываю сумму остатка после каждого платежа как то, что было, минус то, что заплатили.
Цитата(konshyn @  26.1.2015,  20:46 Найти цитируемый пост)
у тебя результат sum+sum_persents =2495833333.333330

хотя бы проверял ( (С) konshyn )))
http://ideone.com/bdmMIN

Цитата(konshyn @  26.1.2015,  20:46 Найти цитируемый пост)
вручную легко получить результат  = 2593742460.1 

Давай считать. Пускай и не по месяцам, а по годам.
Сумма кредита разбивается на 10 лет, т.е. каждый год клиент должен заплатить 1/10 от 1 млрд = 100 млн.

После первого года от платит эти 100 млн и 10% от суммы, которой он этот год пользовался = 1 млрд * 10% = 100 млн.
После второго года он платит положенные 100 млн основного долга и 10 % от суммы, которой он этот год пользовался. Т.к. он пользовался 900 млн, то он платит 900 млн * 10 % = 90 млн.
После третьего года он платит положенные 100 млн основного долга и 10 % от суммы, которой он этот год пользовался. Т.к. он пользовался 800 млн, то он платит 800 млн * 10 % = 80 млн.
.....
После десятого года он платит положенные 100 млн основного долга (последние) и 10 % от суммы, которой он этот год пользовался. Т.к. он пользовался 100 млн, то он платит 100 млн * 10 % = 10 млн.

Итого, он заплатил 100 млн * 10 основного долга и 100+90+80+70+60+50+40+30+20+10 млн процентов, т.е. 550 млн. В сумме получается 1 млрд и 550 млн, а никак не 2,5 млрд, которые получились у тебя.

Это сообщение отредактировал(а) borisbn - 27.1.2015, 10:39


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
konshyn
Дата 27.1.2015, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 19.9.2013

Репутация: нет
Всего: нет



Цитата(borisbn @  27.1.2015,  10:36 Найти цитируемый пост)
хотя бы проверял ( (С) konshyn )))

оу, сорри. бывает:)
я просто считал кредит не так, чтобы каждый месяц отдавать, а так, чтобы по истечению срока отдать один раз. 




--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.