![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Екатерина |
![]()
Сообщение
#1
|
Гость ![]() |
Ребят, помогите, пожалуйста ))
Есть программа на Паскале, которая находит минимум заданной функции методом покоординатного спуска, используя в качестве вспомогательного метода - Золотое сечение. Программа не моя, я вообще полный лох в программировании, а она при компиляции выдает ошибку: Procedure GOLD(A,B,E:real; var X:real; function F:real); - "Unknown Identifier" С виду вроде все правильно, в чем может быть ошибка? Вот полный текст программы: program pokoord; uses crt; type VEC=array [1..8] of real; var E,E1,R:real; I,J,N:integer; Z,Z0,Z9,Z1:VEC; Function F(x:real):real; (*минимизируемая функция*) begin Z[i]:=X; R:=0.9397*Z[1]+0.342*Z[2]; F:=R; end; Procedure GOLD(A,B,E:real; var X:real; function F:real); (*золотое сечение*) const G=0.618034; var X1,X2,F1,F2,F3,R:real; begin R:=(B-A)*G; X1:=A+R; F1:=F(X1); X2:=B-R; F2:=F(X2); while R>E do begin R:=R*G; if F1<F2 then begin X:=X2+R; X2:=X1; F2:=F1; F1:=F(X); X1:=X end else begin X:=X1-R; X1:=X2; F1:=F2; F2:=F(X); X2:=X end end end; Procedure COORD (N:integer; E,E1:real; var i:integer; var Z,Z0,Z9,Z1:VEC); (*покоординатный спуск*) var L:integer; X:real; begin for i:=2 to N do Z[i]:=Z1[I]; repeat L:=0; for i:=1 to N do begin GOLD (Z0[i],Z9[i],E1,X,F); if abs(X-Z1[i])>E then L:=1; Z1[i]:=X end until L=0 end; Begin (*основная программа*) clrscr; repeat write('N,E,E1?'); readln(N,E,E1); for i:=1 to N do begin write('Z0,Z9,Z1 -',I:1,'?'); readln(Z0[i],Z9[i],Z[i]) end; COORD (N,E,E1,I,Z,Z0,Z9,Z1); for i:=1 to N do writeln ('Z(',I:1,')=',Z1[i]); writeln ('F=',R); until false readkey; End. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Конструировать тип прямо в описании заголовка процедуры нельзя... Кроме этого у тебя были еще ошибки.
Вот так программа компилируется: program pokoord; |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 11:22 |