Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Вычисление функции

Автор: Felixxl 4.09.2006 5:55

Здравствуйте. Господа, прошу вашей помощи smile.gif)
Вообщем ситуация следующая:
С прошлого семестра (в котором мы начинали и видимо закончили изучать паскаль) за мной числится несданная курсовая. Курсовой конечно это назвать сложно, это скорее самостоятельная работа, но все же...
Загвоздка в том что бОльшее количество занятий я не посещал (о чем сейчас оч жалею), и сделать задание сам к сожалению не смог. Поэтому взял у друга его работу и сдал. На работе стояла хорошая отметка (результат каких-то исправлений прямо в печатной версии, в присутствии препода. изначальна работат тоже была не верна). Я переписал, вроде бы, исправленый код, но когда я сдал работу под своим именем препод нашел ошибку и настоятельно рекомендует мне ее исправить. Я к сожалению в паскале разбираюсь не очень, поэтому прошу Вашей помощи, благо програмулинка совсем маленькая

Код

program Summa;
var n,k: integer;
f,x,s: real;
begin
write('n=');read(n);
write('x=');read(x);
S:=1;
f:=S;
for k:=1 to n do
begin
S:=S*x;
S:=(f+S)/k*(k+1);
end;
write('S=',S:10:3);
end.


Вот собственно и вся программа.

S:=S*x;
S:=(f+S)/k*(k+1);
эти две строчки препод обвел фигурной скобкой, напротив которой написал "Ерунда!" smile.gif)

Пожалуйста, подскажите что тут можеть быть не верно.

Есть еще одна трудность. Точный текст задания утерян... Но для всех тип задания был един: записать какую-либо функцию на языке паскаль, и написать программу для подсчета этой функции. На сколько я понял из работы друга, функция была либо: "x^k/k!" (x в степени k поделить на k факториал),
либо:
*значек суммы перед дробной чертой*x^k/k*(k+1)

Извините за такие обозначение, но на бумаге это написать просто, а как здесь поставить значек суммы - ума не приложу smile.gif

Вообщем эти две функции были приписаны ручкой гдето справа от программы.

Ребята, если кому не лень помогите пожалуйста разобраться. Вылетать ой как не хочется sad.gif


Заранее благодарен.

Автор: klem4 4.09.2006 10:42

1. В следующий раз тему с таким название закрою. Перенаименовал.
2. Почему в Теоретические вопросы ? Перенесено в задачи
3. Читаем правила форума.

С твоим либо - либо ясности мало

Цитата
функция была либо: "x^k/k!"
http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=44175



Вторую формулу я не понял

Автор: Altair 4.09.2006 11:33

Цитата
Вычеслиние функции

Клемыч, это ты так переименовал ?
Я не сторонник жесткой грамотности, сам русский не очень знаю, но блин!

Автор: Felixxl 4.09.2006 12:31


Списибо за внимание...

Автор: lapp 4.09.2006 13:20

Цитата(Felixxl @ 4.09.2006 9:31) *

Списибо за внимание...

Мы понимаем твои чувства, но гадать, что у тебя там за функция не можем - обращайся на форум телепатов. Потряси друга, узнай функцию и приходи снова - сразу получишь ответ.

Автор: klem4 4.09.2006 19:55

С просони еще и не так можно написать smile.gif Опаздывал в инст, быстро печатал ну и машинально сначала е нажал потом и smile.gif

Исправляю smile.gif

Блин ну ты обо мне совсем плохого мнения smile.gif

Автор: Felixxl 5.09.2006 0:33

оО! Нарыл задание!


Подсчитать сумму:

Код


n             k
             x
∑  -----------------
             k!
k=1



Прошу простить за оформление, но никак не могу вставить картинку в пост. Не только картинку - даже ссылку дать не могу. Не проходят посты - выдает ошибку без объяснения sad.gif(

оч прошу помочь мне немощьному sad.gif


Автор: volvo 5.09.2006 0:40

Felixxl,
ну тебе же klem4 давал ссылку о разложении Exp(x) в ряд... А Exp раскладывается как раз по такой формуле, которую ты привел... Вот более точная ссылка: http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=44175 (вторая программа в этом посте)

Автор: Felixxl 5.09.2006 2:32

Если бы я еще что-то понял из того что там написано...
Трудность в том что нам преподали очень мало операторов, и выкручиваться приходится ими... вот например ума не приложу что означает inc(n) sad.gif(

Автор: volvo 5.09.2006 2:35

Увеличение n на 1... Можешь заменить на

n := n + 1


А вообще твоя программа полностью (вместе с запросом значений X и K) будет выглядеть так:
var
k, n: integer;
x, s, next: double;

begin
write('k = '); readln(k);
write('x = '); readln(x);

next := 1;
s := 0;
n := 0;
repeat
n := n + 1;
next := (next * x) / n;
s := s + next;
until (n = k);
writeln('s = ', s:10:5);
end.

Автор: Felixxl 5.09.2006 20:24

Огромное спасибо за помощь!
Только у меня проблемка... Набрал программу в паскале. И когда нажимаю запуск курсор перескакивает на readln(x) и выскакивает ошибка: "Error 116: Must be in 8087 mode to compile this."
=((
Изза чего это может происходить? P.S. У меня Turbo pascal 7.

И еще один вопросик: что за тип переменных double?

Автор: volvo 5.09.2006 20:27

Сделай одно из двух:

1) либо поменяй Double на Real (просто Double - сопроцессорный тип, а у тебя как видно не включена по умолчанию поддержка сопроцессора)
2) либо САМОЙ ПЕРВОЙ строкой программы поставь {$N+}, это как раз и включит поддердку сопроцессорных типов...

Автор: Felixxl 5.09.2006 20:35

Заменил на real и все заработало! Еще раз огромное вам человеческое спасибо! give_rose.gif


И вопросик, с вашего позволения: это полностью вся программа, или, грубо говоря, скелет, куда просто нужно подставить x^k и k!?
Просто я в коде не узрел ни возведения в степень ни фактиориала...

Автор: volvo 5.09.2006 20:40

Это - полная программа... Возведение в степень делается вот тут: (next*x) , факториал вычисляется последовательным умножением знаменателя на N... Согласись, что

X*X*X*X - это не что иное как X^4, а (1/1)*(1/2)*(1/3)*(1/4) равносильно 1/4!, хотя ты и не видишь функции их вычисления...

Автор: Felixxl 5.09.2006 20:45

Ну вроде бы примерно понял smile.gif)
Опять же спасибо! Попытаюсь вникнуть...

Автор: Felixxl 6.09.2006 0:09

Цитата
(1/1)*(1/2)*(1/3)*(1/4) равносильно 1/4!


А разве это не равносильно 1/24? ))

Автор: klem4 6.09.2006 0:11

Цитата
А разве это не равносильно 1/24? ))


Равносильно, и что ?

ps 4! = 24.

Автор: Felixxl 6.09.2006 0:23

Ничего. Просто пытаюсь понять, про 1/4 это опечатка, или я еще и в математике чего-то не понимаю smile.gif)

Автор: klem4 6.09.2006 0:26

Там написно не 1/4, a 1/4!

И восклицательный знак тут означает факториал smile.gif

4! = 1 * 2 * 3 * 4 = 24
5! = 1 * 2 * 3 * 4 * 5 = 120

Учите матчасть (с)

smile.gif

Автор: Felixxl 6.09.2006 0:28

Тьфу блин, я (!) воспринял не как значек факториала а просто как воскл. знак smile.gif)
Совсем стар стал...