Помощь - Поиск - Пользователи - Календарь
Полная версия: Рекурр. последоват.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
smith
Я к вам уже обращался..
Извините, но тут у меня совсем тупик.
Пропустил кучу занятий.. не могу разобраться....

в аттаче картинка задание.

Не поможете составить программулину?
Я даж не представляю как начать, хотя в паскале вобще норм.
Смущает само задание..
не знаю, что такое i!, и как такое считать..

Добавлено через 1 мин.

С помощью оператора цикла с предусловием while/

program zadaniye;
var n,i:integer;
var S,x,a:real;
begin
writeln('vvedi n,x');
readln(n,x);
S:=0;
i:=1;
while i<=n do begin
a:=(1/i)+sqrt(abs(x));
s:=s+a;
i:=i+1;
end;
writeln(‘S=’, S:0:2);
end.

С помощью оператора цикла с постусловием repeat/

program zadaniye;
var n,i:integer;
var S,x,a:real;
begin
writeln('vvedi n,x');
readln(n,x);
S:=0;
i:=1;
repeat
a:=(1/i)+sqrt(abs(x));
s:=s+a;
i:=i+1;
until i>n;
writeln(‘S=’, S:0:2);
end.










С помощью оператора цикла for/

program zadaniye;
var n,i:integer;
var S,x,a:real;
begin
writeln('vvedi n,x');
readln(n,x);
S:=0;
i:=1;
for i:=1 to n do begin
a:=(1/i)+sqrt(abs(x));
s:=s+a;
end;
writeln(‘S=’, S:0:2);
end.





Добавлено через 40 сек.
так вроде считает, но неверно.....
Lapp
Цитата(smith @ 25.12.2009 1:10) *
не знаю, что такое i!, и как такое считать..

i! - это факториал i, функция, определенная на целых неотрицательных числах, вот так:

0! = 1
i! = (i-1)! * i

- а проще говоря, произведение всех чисел, меньших либо равных данному (кроме нуля, и для него факториал равен 1).

Вычислять факториал можно как в цикле, так и рекуррентно. Поиск по форуму даст тебе десятки реализаций. Вот одна из них, следующая непосредственно из данного выше определения:
function Factorial(n: integer): LongInt;
begin
if n=0 then Factorial:=1 else Factorial:=Factorial(n-1)
end;


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

А твоя формула на картинке какая-то странная.. Непонятно, что такое x. Если это просто параметр, то почему ьы его просто не вынести за скобку и не получить простое n*Sgrt(Abs(x)) ?
volvo
Цитата
Вот одна из них, следующая непосредственно из данного выше определения:
Не совсем... ЭТОТ факториал всегда будет равен единице smile.gif А вот как исправить - это автор темы пускай подумает...
smith
[quote name='Lapp' post='140690' date='25.12.2009 6:29']


Добавлено через 5 мин.
[quote name='Lapp' post='140690' date='25.12.2009 6:29']

А твоя формула на картинке какая-то странная.. Непонятно, что такое x. Если это просто параметр, то почему ьы его просто не вынести за скобку и не получить простое n*Sgrt(Abs(x)) ?
[/quote]

Сейчас объясню на счет задания.

"Даны натуральное число n, действительное число x, Вычислить: "далее идет эта картинка(см.выше)."
Это все, что имеется.


А программулина моя-то верная?=)
volvo
Цитата
А программулина моя-то верная?=)
Как она может быть верной, если ты не имел понятия о том, что такое факториал? Нет, конечно. Твой код надо править...
Lapp
Цитата(volvo @ 25.12.2009 12:13) *
Не совсем... ЭТОТ факториал всегда будет равен единице smile.gif А вот как исправить - это автор темы пускай подумает...
Упс! Да, это я ошибся..
Ладно, если вопрос задан - исправлять не буду. smith, думай, все должно быть точно по определению. Кое что я забыл...
smith
да, парни, спасибо огромное!
У меня к вам оч большая просьба....
вот эта программа (см. выше 1 пост) вы бы не могли блок схему написать с предусловием? и телефончик в личку киньте я 100р положу вам)) или если нужно - больше положу!
Очень нужно!
Заранее спс))
Lapp
перенести в "На Заказ"?
smith
Цитата(Lapp @ 25.12.2009 6:29) *
Вычислять факториал можно как в цикле, так и рекуррентно. Поиск по форуму даст тебе десятки реализаций. Вот одна из них, следующая непосредственно из данного выше определения:
а можно как-то избежать использование function?
препод говорит типа не должно этого быть=( типа это всего лишь рекк. последовательность.
просит еще какую-то общую формулу...=(
тут один чел с форума мне помог - оказалось, что в корне неправильно=(
volvo
Цитата
а можно как-то избежать использование function?
А можно СРАЗУ писать в первом посте, чего надо избегать, а чего - нет? Где-то там было написано что-то про использование функций? Нет.

Смотри в FAQ-е примеры разложения в ряд, там было то, что тебе надо (чтоб ты потом не говорил, что опять в корне неправильно то, как тебе помогают - кода не будет. Делай самостоятельно, тогда будешь обвинять самого себя.)

Успехов...
smith
а где нибудь в условии было что нибудь про избегать функции?
НЕТ!
И читать надо внимательнее, господин администратор, что ПРЕПОДАВАТЕЛЬ ПРИ ПРОВЕРКЕ СКАЗАЛ сделать то же самое но без функции
А обвинять я БУДУ, потому что задачу мне делали на коммерческой основе!!!
тоже мне тут. nea.gif
andriano
Цитата(smith @ 5.01.2010 12:31) *
...ПРЕПОДАВАТЕЛЬ ПРИ ПРОВЕРКЕ СКАЗАЛ сделать то же самое но без функции
А обвинять я БУДУ, потому что задачу мне делали на коммерческой основе!!!
тоже мне тут. nea.gif
Задачу тебе сделали? Ты ее преподавателю принес? Преподаватель скаал, что сделано неверно? Или, может, он задал ДРУГУЮ задачу: сделать то же самое, но другим способом?
Даже на коммерческой основе тебе делали ОДНУ задачу, а не "эту и все последующие".
smith
Цитата(andriano @ 5.01.2010 13:15) *

Преподаватель скаал, что сделано неверно?

она была сделана через функцию ПЛЮС неверно!
volvo
Цитата
А обвинять я БУДУ, потому что задачу мне делали на коммерческой основе!!!
В таком случае не "один чел с форума мне помог", а имена, пароли и явки - в студию. И обвиняй конкретно этого "чела", а не весь форум, а в следующий раз будешь знать, кому заказывать, а кому - нет...
Lapp
Цитата(smith @ 5.01.2010 12:31) *
А обвинять я БУДУ, потому что задачу мне делали на коммерческой основе!!!
Давай точнее. Кто делал? какая задача? где эта тема? Я пока вижу две твоих темы, и обе они не в коммерческом разделе.

Кроме прочего, никакие платежи на счет форума на проходили в последнее время. О чем ты говоришь? Поясни, пожалуйста, что ты имеешь в виду.
Lapp
smith, администрация Форума ждет ответов.
Пойми, это надо, чтобы разобраться в ситуации. Если кто-то прикрывается именем Форума, мы должны это знать. Пожалуйста, ответь.
smith
Простите, ребят, если обидел кого, просто нервы сдают. 9го числа надо сдавать, а у меня не готово=(
sheka - вот пользователь, который неверно сделал.
andriano
IMHO кроме имени не помешало бы выложить текст, чтобы можно было оценить, насколько решение соответствует постевленной задаче, и условия предоставления услуги.
Согласись, не имея необходимой информации, трудно понять, кто прав, кто виноват.
smith
program zadaniye;
var n,i:integer;
var S,x,a:real;
begin
writeln('vvedi n,x');
readln(n,x);
S:=0;
i:=1;
while i<=n do begin
a:=(1/i)+sqrt(abs(x));
s:=s+a;
i:=i+1;
end;
writeln(‘S=’, S:0:2);
end.
.

Вот это присланный, выполненный им вариант задания.
Ребят, еще есть блок-схема, но что-то не смог сейчас с ходу найти.

Помогите, пожалуйста сделать правильно!
Очень прошу. Почитайте, я там в первом после отписал что у меня было. И еще такой вопрос, что есть "общая формула рекурр.последовательности"?
Очень нужно!
Всем спасибо заранее!
Unconnected
Да даже если sheka и неправильно сделал - он то действовал не от имени форума (или smith сказал обратное?), и даже в этом случае обвинять весь форум и требовать что-то - неправильно.
smith
Цитата(Unconnected @ 7.01.2010 23:30) *

Да даже если sheka и неправильно сделал - он то действовал не от имени форума (или smith сказал обратное?), и даже в этом случае обвинять весь форум и требовать что-то - неправильно.

да я же извинился.
говорю:погорячился. с кем не бывает?.
К форуму нет и не может быть претензий.
volvo
Цитата
Помогите, пожалуйста сделать правильно!
Навскидку -
  s := 0; t := 1;
for i := 1 to n do
begin
t := t / i;
s := s + (t + sqrt(abs(x)));
end;
Это если через For, для других циклов - аналогично...
Lapp
М
все все поняли, флуд в этой теме прекращаем.

Я добавлю разъясняющую инфу в раздел "Задачи на заказ"

smith
s := 0; t := 1;
for i := 1 to n do
begin
t := t / i;
s := s + (t + sqrt(abs(x)));
end;

.

Извините меня, дурака, но где здесь поиск факториала?))
Простите, но 5!=1*2*3*5?))
Поясните, пожалуйста!
volvo
Цитата
Простите, но 5!=1*2*3*5?))
Нет, 5! = 1*2*3*4*5
Цитата
Извините меня, дурака, но где здесь поиск факториала?))
Смотри:
Изначально: t = 1
первая итерация: i = 1, t = t/i = 1/1
вторая итерация: i = 2, t = t/i = 1/(1*2)
третья итерация: i = 3, t = t/i = 1/(1*2*3)
четвертая итерация: i = 4, t = t/i = 1/(1*2*3*4)
пятая итерация: i = 5, t = t/i = 1/(1*2*3*4*5)

Итого, что имеем в знаменателе? Не факториал i, случайно?
smith
спасибо! give_rose.gif
smith
окей, прога с циклом со счетчиком исправно работает.
uses crt;
var x,t,s:real;
n,i,j:integer;
begin
clrscr;
write('x=');readln(x);
write('n=');readln(n);
s:=0;
for i:=1 to n do
begin
t:=1;
for j:=1 to i do
t:=t/j;
s:=s+t+sqrt(abs(x));
end;
write('S=',s:0:2);
readln
end.
.

Но вот цикл с пост/пред-условием никак не работает...=(
smith
uses crt;
var x,t,s:real;
n,i,j:integer;
begin
clrscr;
write('x=');readln(x);
write('n=');readln(n);
s:=0;
i:=1;
while i<=n do
begin
t:=1;
j:=1;
while j<=i do
begin
t:=t/j;
j:=j+1;
end;
s:=s+t+sqrt(abs(x));
i:=i+1;
end;
write('S=',s:0:2);
readln
end.
.

ок, с while есть))
Пожалуйста, помогите с репит антил сделать=)
volvo
var x,t,s:real;
n,i,j:integer;
begin
write('x=');readln(x);
write('n=');readln(n);
s:=0;
i := 0;
repeat
inc(i);
t:=1;
j := 0;
repeat
inc(j);
t:=t/j;
until j = i;
s:=s+t+sqrt(abs(x));
until i = n;
write('S=',s:0:2);
readln
end.
Выдает тот же результат, что и твои оба варианта, хотя я не понимаю, зачем тебе внешний цикл. В первоначальном условии про него ни слова не было, и вот это:
var x,t,s:real;
n,i,j:integer;
begin
write('x=');readln(x);
write('n=');readln(n);
s:=0; t := 1;
for i:=1 to n do
begin
t:=t/i;
s:=s+t+sqrt(abs(x));
end;
write('S=',s:0:2);
readln
end.
работает точно так же, как твой код из поста №27. А если оно работает так же, "зачем писать больше"? почти (С). Итого: от внешнего цикла можно избавиться...
smith
Цитата(volvo @ 8.01.2010 17:52) *

работает точно так же, как твой код из поста №27. А если оно работает так же, "зачем писать больше"? почти (С). Итого: от внешнего цикла можно избавиться...

Да тут дело в том, что задание гласит:
написать прогу тремя способами: с пред/пост-условием и с помощью цикла со счетчиком.=)
volvo
Задание гласит, что тебе надо написать то, что написано в первой строке, а не то, что во второй:
Нажмите для просмотра прикрепленного файла

Учти, я тебя предупредил... Чтоб потом не было опять претензий dry.gif
smith
чорд, тогда я ваще ниче не понял))
Можешь попродробнее на примере программы?
Чет я значит непрально понял/сделал.

Сейчас ты написал и я чет задумался))
Спасибо большое.
Сможешь помочь разобраться? mega_chok.gif
volvo
Я тебе уже привел программу, которая выполняет твое задание:
Цитата
var x,t,s:real;
n,i:integer;
begin
write('x=');readln(x);
write('n=');readln(n);
s:=0; t := 1;
for i:=1 to n do
begin
t:=t/i;
s:=s+t+sqrt(abs(x));
end;
write('S=',s:0:2);
readln
end.
Если тебе надо сделать это несколькими видами циклов - то не делай их ВЛОЖЕННЫМИ, они должны идти последовательно один за другим... Вот тебе пример для For и While, третий добавишь сам:
var x,t,s:real;
n,i,j:integer;
begin
write('x=');readln(x);
write('n=');readln(n);

write('for loop: ');
s:=0; t := 1;
for i:=1 to n do
begin
t:=t/i;
s:=s+t+sqrt(abs(x));
end;
writeln('S=',s:0:5);

write('while loop: ');
s:=0; t := 1;
i := 1;
while i <= n do
begin
t:=t/i;
s:=s+t+sqrt(abs(x));
inc(i);
end;
writeln('S=',s:0:5);

readln
end.
smith
спасибо!!
Тыща раз спасибо! good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.