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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 13:18   #1
IIyX
 
Регистрация: 14.03.2011
Сообщений: 3
По умолчанию Pascal в последовательность произведений найти первое произведение, не превосходящее по величине В

Дано условие: рассмотреть последовательность произведений 1.1*2/11,1*2/11*3/21,...,1*2/11*3/21*...*(n-1)/(n*10+1) требуется найти первое произведение, не превосходящее по величине В.... решать с помощью табулирования

ну вообщем получился у меня следующий код:

Код:
var b,n,k:real;
begin
writeln('Введите число B: ');
write('B= ');
readln(b);
n:=3;
k:=1;
while k<b do
begin
k:=k*(n-1)/(n*10+1);
n:=n+1;
end;
write ('Произведение равно : 'k:0:2);
readln
end.
Но программа выдает неверный результат - на любое вводимое число она выдает ответ - единицу. Подскажите пожалуйста где у меня ошибка?
Заранее благодарю.

Последний раз редактировалось IIyX; 14.03.2011 в 13:26.
IIyX вне форума Ответить с цитированием
Старый 14.03.2011, 15:00   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Помоему у тебя вводимое число неправильно воспринимается попробуй заменить readln(b); на read(b);
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 14.03.2011, 15:55   #3
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

с вводом все нормально, условие наоборот надо

while k>b do

ведь нужно найти первое число из последовательности которое будет меньше b, а значит и вычислять нужно до тех пор, пока это число больше него)

P.S. и вывод поправьте, два разряда - это довольно маловато для такой последовательности
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 14.03.2011, 23:22   #4
IIyX
 
Регистрация: 14.03.2011
Сообщений: 3
По умолчанию

Спасибо за советы,но ничего не помогло - от количества разрядов меняется количество нулей после единицы(единица так и осталась - на любое вводимое число). Целочисленным ответ не может быть - т.к. по условию в ответе должны быть вещественные числа.
IIyX вне форума Ответить с цитированием
Старый 15.03.2011, 08:07   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

странно, у меня такой код работал как надо

Код:
var b,k:real; n:integer;
begin
writeln('Введите число B: ');
write('B= ');
readln(b);
n:=3;
k:=1;
while k>b do
begin
k:=k*(n-1)/(n*10+1);
n:=n+1;
end;
write ('Произведение равно : 'k:0:18);
readln
end.
ну а количество разрядов увеличить только потому что вроде начиная с n=5 число получается меньше 0,01 и соответственно двух разрядов будет маловато

ну и соответственно B должно быть меньше или равно 1, в другом случае уже первое же число (1) и будет
Цитата:
первое произведение, не превосходящее по величине В
благодарность - сюда (не забываем писать от кого)

Последний раз редактировалось Stilet; 15.03.2011 в 15:01.
Zer0 вне форума Ответить с цитированием
Старый 15.03.2011, 12:41   #6
IIyX
 
Регистрация: 14.03.2011
Сообщений: 3
По умолчанию

Спасибо большое!! вы мне очень помогли.
IIyX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти третий елемент по величине в масиве С++ mr_fomin Помощь студентам 9 14.12.2010 00:52
Вычисление сходящихся бесконечных произведений(pascal) xDimedrolx Помощь студентам 2 26.09.2010 22:33
Найти второй по величине элемент (assembler) Rom@shka Помощь студентам 3 22.06.2009 20:07
Массив! Найти сумму произведений цифр perojenko Помощь студентам 3 22.06.2009 11:48
Найти 3-ий по величине элемент массива.. PavelZet Помощь студентам 10 07.05.2009 21:06