1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
необходимо вывести для 5 или больше значений X значение сходимости ряда
Program Lab0; Uses crt; {$F+} {SI global.inc} {SI func.inc} {SI inout.inc} Begin CLRSCR; Writeln('Laba1'); Writeln('+--------------+'); Writeln('+--------------+'); Writeln('THE END.'); readln; END.
func.inc
function Y(x: double): double; const eps = 0.0000001; var s, next: double; n: integer; begin next := 1; s := next; n := 1; repeat inc(n); next := next*(n-1)*x/n; s := s + next; until (next) < eps; Y:= s end;
как выводиться информация ввиде таблице в данном случае ?? можно ли функцию в виде параметра передовать? что-то совсем всё забыл(
Только наоборот: при вводе массива добавить var в заголовок процедуры (иначе будешь получать все время нулевой массив, или мусор - зависит от компилятора), а при выводе - var необязателен...
а в программе Inc(A); то почему пишет что А- это неизвестый индефикатор (номер 3 ошибка) ??
Может это от того, что A описан внутри процедуры, а не программы?
--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно. -------------------- Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
Program Lab1; Uses crt; Type mas = Array [1..5] of real; Var i:integer; A: mas; function Y(x: double): double; const eps = 0.0000001; var s, next: double; n: integer; begin next := 1; s := next; n := 1; repeat inc(n); next := next*(n-1)*x/n; s := s + next; until (next) < eps; Y:= s end; procedure inc(var A:mas); Var i:integer; begin for i:=1 to 5 do Begin Writeln('Vvedite',i,' -bIU* X'); readln(A[i]); end; end;
procedure out(A:mas); Var i:integer; begin Writeln('X Cymma P9IDA'); for i:=1 to 5 do Writeln('X=',A[i],' ',y(A[i])); readln; end;
Ошибка в ф-и y(x:double), практически никогда не выполняется исловие next < eps
Если ошибки в вычислениях нет, то можно сделать так :
function Y(x: double): double; const eps = 0.001; var s, next: double; n: integer; begin next := 1; s := next; n := 1; repeat inc(n); next := next*(n-1)*x/n; s := s + next; until ((next) < eps) or (n=100); {<--------} Y:= s end;
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
Кстати, советую поменять название своей ф-и ... inc - всетаки в паскале уже есть, и ты его используешь мнежду прочим помимо использования "своего" inc.
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
klem4, ну и что? Он же использует встроенный Inc ДО описания своего... Видимость процедур функций никто не отменял... Рукописный Inc в это время просто не виден, никаких проблем возникать не должно (если не менять процедуры местами)
punkska Так ты же ничего не подключаешь! {SI ...} поменяй на {$I ...}
Составить алгоритм модулю для вычисления y(x)=x/2+2*x^2/3+3*x^3/4+... вычислить пока очередной член ряда а н-ое > E вычислить для 5 значений x
ПРЕАОДОВАТЕЛЬ был взбешон и не доволен
1. этой строчкой в функции until ((next) < eps) or (n=100)
может быть можно регулировать сходимость ряда, изменяя количество нулей .... как вам такая мысль? что предложите
2. табличный вывод Я совсем забыл как он делаеться ! НО почитав хелп нашёл полезную инфу
по ней составил простую программу
program znaki; uses crt; var i: integer; Begin for i:=179 to 219 do write(i,' ',chr(i),' '); readkey; end.
в начале начал писать таблицу циклами что0то типо for i:=1 to 15 do writeln(chr(205)); wr//(chr(187));чуть крыша не поехала!!! таблица не получалась)
потом вспомнил что таблицу можно рисовать через врайтлн а сами знаки -ЗАЖАВ АЛЬТ + НОМЕР СИМВОЛА!
но таблица не получаеться ровной! как сделать чтоб y(x) занимал заданное количество клеток y(x):6 не получаеться( что тут посоветуете?
3. необходимо написать эту же функцию тока с пред условие! что это значит? он про чикл мне говорил???
2. пункт
возможно написать универсальный модуль для построение таблиц??? может его на форуме уже писали!? Преподователь сказал что это ОЧЕНЬ сложно и он будет ОЧЕНЬ большим!!
А вот это надо было делать еще в САМОМ ПЕРВОМ сообщении... Ты этого не сделал, получил от преподавателя "на орехи"... В следующий раз будешь писАть задание сразу.
Сходимость ряда ТЫ регулировать не можешь, ряд у тебя задан раз и навсегда... Делай вот так, например (ввод данных организуешь сам...):
const eps = 0.0001; n = 5; x: array[1 .. n] of double = (0.1, 0.5, 0.75, 1.25, 3.75);
var s, next: double; i, j: integer;
begin for i := 1 to n do if x[i] < 1 then begin
s := 0; next := 1; j := 1; repeat
inc(j); next := next * x[i]; s := s + j * next / succ(j);
until (j * next / succ(j)) < eps; writeln('x = ', x[i]:10:5, ' s = ', s:10:5)
end else writeln('x = ', x[i]:10:5, ' ряд расходится !!!');
Да, но не забывай, что тебе нужно находить сумму, ПОКА
Цитата
очередной член ряда а н-ое > E
... Будет ряд расходящимся - условие не выполнится никогда... Я предпочитаю дать сообщение и закончить программу корректно, а не получать Run-Time Errors... Но, впрочем, делай как знаешь...