1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
function Y(x: real): real; const eps = 0.0001; var s, next: real; 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;
function Y2(x: real): real; const eps = 0.0000001; var s, next: real; n: integer; begin next := 1; s := next; n := 1; While (next) < eps do Begin inc(n); next := next*(n-1)*x/n; s := s + next; end; Y2:= s end;
global.inc
Type mas = Array [1..5] of real; Var i: integer; A: mas;
inout.inc
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; }
Procedure out(A:mas); var i:integer; Begin Writeln('╒══════╤══════════╤══════════╕');
for i:=1 to 5 do begin Writeln('│', A[i]:4 ,'│', Y(A[i]):8 ,'│', Y2(A[i]):8 ,'│'); Writeln('╞══════╪══════════╪══════════╡'); end; Writeln('╘══════╧══════════╧══════════╛'); end;
программа прерываеться после ввода данных и указывает на ошибку 205 в первой функции! помогите отладить программу!
ну наверно нужно из функций вычеркнуть EPS и записать строчку Const eps=0.00001; в глобал.inc
Действительно если епс перенести работает))) тока таблица!!! кривая! помогите настроить чтоб красиво было
ВОТ прикрепил программу! вроде и таблицу рисует! есть ошибки! с чем связана такая большая разница между функциями y and y2 ? как улучшить табличный вывод? последняя ячейка получаеться пустой...как бы её удолить..
punkska, внимательно глянь на программу, которую ты привел в предыдущем посте... У тебя в циклах While и Repeat одинаковые условия, а ведь по идее цикл While выполняется пока условие истинно, а Repeat - пока оно ложно.
То есть, у тебя 2 совершенно разных вычисления производятся.
Const eps=0.0001; n=5; Type mas = Array [1..n] of real; ftype = function (Var x:real):real; Var Res,Res2,A: mas; y,y2:ftype;
func.inc
function Y(x: real): real; var s, next: real; 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;
function Y2(x: real): real; var s, next: real; n: integer; begin next := 1; s := next; n := 1; While (next) > eps do Begin inc(n); next := next*(n-1)*x/n; s := s + next; end; Y2:= s end;
inout.inc
procedure Inc(var A:mas; n:integer); Var i:integer; begin for i:=1 to n do Begin Writeln(' Vvedite X[',i,']'); readln(A[i]); end; end;
Procedure out(A:mas; n:integer); var i:integer; Begin Writeln('ЙННННННЛННННННННННННЛНННННННННННН»'); Writeln('є',' X ','є',' Y(x) ','є',' Y2(x) ','є'); Writeln('МННННННОННННННННННННОНННННННННННН№'); for i:=1 to (n-1) do begin Writeln('є', A[i]:6:2 ,'є', Res[i]:12:5 ,'є', Res2[i]:12:5 ,'є'); Writeln('МННННННОННННННННННННОНННННННННННН№'); end; Writeln('є', A[n]:6:2 ,'є', Res[n]:12:5 ,'є', Res2[n]):12:5 ,'є'); Writeln('ИННННННКННННННННННННКННННННННННННј'); end;
procedure root(n:integer; A:mas; Y:ftype; Res:mas); var i:integer; Begin for i:=1 to n do Res[i]:=Y(A[i]); end; end;
Проблема возникла с функцией root и передачи в неё функций Y and Y2
punkska, Первое: ты не должен объявлять переменную функционального типа (то, что ты делаешь в GLOBAL.INC:
Var Res,Res2,A: mas; y, y2:ftype; { <-- Это не нужно... }
)
Второе: сама процедура Root - ты явно забыл там Begin
procedure root(n:integer; A:mas; Y:ftype; Res:mas); var i:integer; Begin for i:=1 to n do begin { <-- Здесь } Res[ i ]:=Y(A[ i ]); end; end;
Третье: в основной программе ты должен поменять местами аргументы Inc и Out, потому что ты первым должен передавать массив, и только потом - N Четвертое: Заголовки функции в описании типа и при реализации не должны различаться, а у тебя:
// ... Type mas = Array [1..n] of real; ftype = function (Var x:real):real; { <-- Обрати внимание на Var !!! }
// ...
function Y(x: real): real; { <-- Где Var ? } var ...