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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
#1

Задача "Банковские проценты" - C++

23.08.2012, 11:09. Просмотров 3307. Ответов 5
Метки нет (Все метки)

Вот условие:
Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть копеек отбрасывается. Каждый год сумма вклада становится больше. Определите, через сколько лет вклад составит не менее y рублей.
Программа получает на вход три натуральных числа: x, p, y и должна вывести одно целое число.
Вот решение с сайта-источника:
C++
1
2
3
4
5
6
7
8
9
10
11
 double x,p,y;
  int years = 0;
  cin>>x>>p>>y;
  while (x<y) {
    x *= (1 + p/100.0);
    x *= 100;
    x = (int) x;
    x /= 100;
    years++;
  }
  cout<<years;
Подскажите, обязательны ли все приведённые действия, верно ли написана программа?
Вот мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
int x,p,y;
    int n=0;
    cin>>x>>p>>y;
    while(x<y)
    {
        x+=x*0.01*p;    
        n++;
    }
    cout<<n;
    getch();
    return 0;
Какой вариант программы правильный и почему? Заранее благодарю за разъяснения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2012, 11:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача "Банковские проценты" (C++):

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов - C++
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt; using namespace std; int main()...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64" - C++
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа при...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Банковские проценты - C++
Добрый вечер, данная задача уже поднималось, однако решения я там так и не нашёл, поэтому хотел бы выложить её здесь ещё раз: Вклад в...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

5
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
23.08.2012, 11:33 #2
второй вариант
0
Aloir
218 / 218 / 13
Регистрация: 17.12.2010
Сообщений: 692
23.08.2012, 11:39 #3
второй вариант, не учитывает то, что клиент может внести сумму на вклад с копейками, как и сумма y тоже может быть с копейками.
и процент: ты вводишь процент как целочисленное число, а если там 1,35% что тогда?
так что 1
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
23.08.2012, 12:10 #4
Цитата Сообщение от Aloir Посмотреть сообщение
второй вариант, не учитывает то, что клиент может внести сумму на вклад с копейками,
по условию задачи не может внести вклад копейками:
Цитата Сообщение от PG94 Посмотреть сообщение
Вклад в банке составляет x рублей.
Второй вариант правильный. Пояснения (см комментарии):
1-ый код:
C++
1
2
3
4
5
6
7
8
9
10
11
 double x,p,y;
  int years = 0;
  cin>>x>>p>>y;
  while (x<y) {
    x *= (1 + p/100.0);// допустим после первого года получилось x=120.35 (120 руб 35 коп)
    x *= 100;// здесь x=12035.0
    x = (int) x;// здесь x=12035 
    x /= 100;// здесь x=120.35 ( и в следующем вычислении участвуют и 35 копеек,хотя по условию они должны быть отброшены)
    years++;
  }
  cout<<years;
2-ой код: во втором коде все правильно.
Вот тест, который показывает разницу в вычислениях:
100 5 2000000
1
Leonzi
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 3
26.09.2012, 12:14 #5
Ребят вот сюда http://shpargalka.kz/matematika/zada4-na-proc загляните и немного добавьте знанкий с++ и поймете почему 2 вариант решен правильно.
0
ValeryS
Модератор
6675 / 5084 / 475
Регистрация: 14.02.2011
Сообщений: 17,056
26.09.2012, 12:22 #6
Цитата Сообщение от valeriikozlov Посмотреть сообщение
x /= 100;// здесь x=120.35 ( и в следующем вычислении участвуют и 35 копеек,хотя по условию они должны быть отброшены)
years++;
Цитата Сообщение от PG94 Посмотреть сообщение
после чего дробная часть копеек отбрасывается.
дробная часть копеек, а не копейки(дробная часть рублей)

Добавлено через 3 минуты
во втором варианте нет
Цитата Сообщение от PG94 Посмотреть сообщение
после чего дробная часть копеек отбрасывается.
следовательно он неправилен
первый правильный хотя запись можно и сократить
0
26.09.2012, 12:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2012, 12:22
Привет! Вот еще темы с ответами:

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include &lt;iostream&gt; #include...


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

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

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