IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Рост вклада в банке с процентами, Что не так в коде? Всё время получается число 426
Drughi
сообщение 8.06.2011 22:47
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


С использованием оператора цикла с параметром For

В 1626 году индейцы продали остров Манхэттэн за K долларов. Если бы эти деньги были помещены в банк на текущий счёт и ежегодный прирост составлял p%, какова бы была стоимость капитала в 2011 году?

Проверять на числах: p:=6.5% K:=20

Мой код (что то тут не так)

var
i:integer;

p,k,z,s: real;
begin
writeln('Введите количество процентов');
read(p);
writeln('Введите сумму покупки острова');
read(k);
for i:=1 to 385 do
s:=k*(1+(p/100));
z:=s*k;
write(z);
end.


Сообщение отредактировано: Lapp - 9.06.2011 2:04


--------------------
DesignFootball.Ru - Первый русскоязычный сайт о футбольной форме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 8.06.2011 23:01
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Потому что у вас ничего не накапливается вы 385 раз вычисляете одно и тоже число s и затем умножаете на одно и тоже число,в общем у вас одни константы,есть 2 варианта,вы для каждого года будете получать стоимость,либо для каждого года будете высчитывать процент.
Второе как то так:

for i:=1 to 385 do
s:=s*(1+p/100);


Изначально s:=1;
Кстати приоритет операции деления выше чем суммирования,так что внутренние скобки не обязательны.

Сообщение отредактировано: Krjuger - 8.06.2011 23:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Drughi
сообщение 8.06.2011 23:38
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Цитата(Krjuger @ 8.06.2011 23:01) *

Потому что у вас ничего не накапливается вы 385 раз вычисляете одно и тоже число s и затем умножаете на одно и тоже число,в общем у вас одни константы,есть 2 варианта,вы для каждого года будете получать стоимость,либо для каждого года будете высчитывать процент.
Второе как то так:

for i:=1 to 385 do
s:=s*(1+p/100);


Изначально s:=1;
Кстати приоритет операции деления выше чем суммирования,так что внутренние скобки не обязательны.


var
i:integer;
p,k,z,s: real;
begin
writeln('Ââåäèòå êîëè÷åñòâî ïðîöåíòîâ');
read(p);
writeln('Ââåäèòå ñóììó ïîêóïêè îñòðîâà');
read(k);
for i:=1 to 385 do
s:=s*(1+p/100);
z:=s*k;
write(z);
end.


Теперь всегда получается 0


--------------------
DesignFootball.Ru - Первый русскоязычный сайт о футбольной форме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 8.06.2011 23:43
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Я же сказал
Цитата
Изначально s:=1;

До начала цикла надо инициализировать это самое s

var
i:integer;
p,k,z,s: real;
begin
writeln('Ââåäèòå êîëè÷åñòâî ïðîöåíòîâ');
read(p);
writeln('Ââåäèòå ñóììó ïîêóïêè îñòðîâà');
read(k);
s:=1;
for i:=1 to 385 do
s:=s*(1+p/100);
z:=s*k;
write(z);
end.



Сообщение отредактировано: Krjuger - 8.06.2011 23:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Drughi
сообщение 9.06.2011 0:08
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Цитата(Krjuger @ 8.06.2011 23:43) *

Я же сказал

До начала цикла надо инициализировать это самое s

var
i:integer;
p,k,z,s: real;
begin
writeln('Ââåäèòå êîëè÷åñòâî ïðîöåíòîâ');
read(p);
writeln('Ââåäèòå ñóììó ïîêóïêè îñòðîâà');
read(k);
s:=1;
for i:=1 to 385 do
s:=s*(1+p/100);
z:=s*k;
write(z);
end.




Получилось 677062856159.56.
Спасибо. С меня +


--------------------
DesignFootball.Ru - Первый русскоязычный сайт о футбольной форме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.04.2024 7:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"