Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 01:31   #1
sunplant
Пользователь
 
Регистрация: 07.04.2010
Сообщений: 13
По умолчанию Вопрос из учебника С. Прата

Изучаю книгу С. Прата. В главе 5 у него присутствует такая задача:
Дафна сделала вклад на сумму $100 под простые проценты, которые составляют 10%.
Итак, ежегодно ее вкладдаетдоход в сумме 10% от первоначального вклада, или $10:
проценты = 0.1 x исходный баланс
В то же время Клео сделала вклад на сумму $100 под сложные проценты, которые составляют 5%. Другими словами, 5% от текущего остатка, с учетом начисленных ранее процентов:
проценты = 0.05 x текущий баланс.
Доход Клео за первый год составит 5% от суммы вклада $100, что даст остаток $105. В следующем году ее доход в виде 5% от суммы $105 составит $5.25 и т.д. Напишите программу, которая определяет, сколько лет потребуется для того, чтобы сумма вклада Клео превысила сумму вклада Дафны, а затем отображает сумму обоих вкладов в этот момент.
Я задачу попробовал решитьтак:
Код:
#include<iostream>
using namespace std;
const int Arsize = 35;
int j=2;
int i=2;
int main()
{
double x[Arsize];
x[0] = 100.0;
x[1] = 105.0;
int y[Arsize];
y[0] = 100;
y[1] = 110;
while (x[i] < y[j])
{
x[i] = (x[i - 1] * 0.05) + x[i - 1]; 
y[j] = y[j-1] + 10; 
cout << "x " << i << "= " << x[i] << " \t";
cout << "y "<< j << "= " << y[j] << endl;
++i;
++j;
}
cout << "End" << endl;
return 0;
}
Только почему-то цикл не прерывается, когда x[i] становится больше y[j]!
Не подскажите, в чем проблема?
sunplant вне форума Ответить с цитированием
Старый 07.04.2010, 02:54   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Проблема в том что вы сначала ищете значения и потом увеличиваете индексы и проверяете не рассчитав значения.
Уменьшите i и j на 1, а увеличение поставте в самое начало цикла
Код:
#include<iostream>
using namespace std;
const int Arsize = 35;
int j=1;
int i=1;
int main()
{
double x[Arsize];
x[0] = 100.0;
x[1] = 105.0;
int y[Arsize];
y[0] = 100;
y[1] = 110;
while (x[i] < y[j])
{
++i;
++j;
x[i] = (x[i - 1] * 0.05) + x[i - 1]; 
y[j] = y[j-1] + 10; 
cout << "x " << i << "= " << x[i] << " \t";
cout << "y "<< j << "= " << y[j] << endl;
}
cout << "End" << endl;
return 0;
}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 07.04.2010 в 02:56.
Hacker19_90 вне форума Ответить с цитированием
Старый 07.04.2010, 11:05   #3
sunplant
Пользователь
 
Регистрация: 07.04.2010
Сообщений: 13
По умолчанию Спасибо!

Спасибо, Hacker19_90!
sunplant вне форума Ответить с цитированием
Старый 07.04.2010, 11:10   #4
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Я не понимаю таких людей....как кто-то может учиться за тебя, парень?
Надо самому дойти до ошибки, проникнуться, исправить, и радоваться хоть малому, но опыту! а не клянчить на форуме решение задачек из книги, стыд и позор!
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какую купить версию книги Стивена Прата. Запутался. spamer Свободное общение 0 26.01.2010 03:01
вопрос из учебника pilot76 Помощь студентам 1 12.09.2009 16:51
Разработка электронного учебника jony77777 Софт 0 22.04.2009 09:48
Пример из учебника valerij Microsoft Office Excel 11 20.06.2008 15:43