Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 20:13   #1
swat16
 
Регистрация: 07.04.2012
Сообщений: 4
По умолчанию проверка программы

может кто проверить программу, выдает 113 ошибку в 37 строке

Код:
program poisk;
uses crt;
function f(x,y:real):real;
begin f:=x*exp(-sqr(x)-sqr(y)); end;
var x1,x2,B,M,t, R,N,y1,y2,ksi1,ksi2,ksin:real;
k,j:integer;
begin
k:=0;
j:=1;
WriteLn('vvedite x1');
ReadLn(x1);
WriteLn('vvedite x2');
ReadLn(x2);
WriteLn('vvedite B');
ReadLn(B);
WriteLn('vvedite M');
ReadLn(M);
WriteLn('vvedite t');
ReadLn(t);
WriteLn('vvedite R');
ReadLn(R);
WriteLn('vvedite N');
ReadLn(N);
while true do begin
ksi1:=2*Random-1;
ksi2:=2*Random-1;
ksin:=sqrt(ksi1*ksi1+ksi2*ksi2);
y1:=x1+t*ksi1/ksin;
y2:=x2+t*ksi2/ksin;
if f(y1,y2)<f(x1,x2) then begin
x1:=y1;
x2:=y2;
k:=k+1;
if k=N then break
else j:=1;
end;
else begin
if j<M then j:=j+1
else if t<R then break
else begin
t:=B*t; j:=1;
end;
end;
end;
end;
WriteLn(x1,x2,f(x1,x2));
ReadLN;
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 20.04.2012 в 10:31.
swat16 вне форума Ответить с цитированием
Старый 19.04.2012, 20:21   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ошибка у тебя в тексте выделена жирным.
s-andriano вне форума Ответить с цитированием
Старый 19.04.2012, 20:23   #3
swat16
 
Регистрация: 07.04.2012
Сообщений: 4
По умолчанию

так это я выделил. какая тут ошибка я не пойму, выдает 113 и что с ний делать не знаю
swat16 вне форума Ответить с цитированием
Старый 19.04.2012, 20:23   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Для того, чтобы исправить ошибку, нужно знать, что именно должна деать программа.
Увы, ты ничего об этом не написал.
s-andriano вне форума Ответить с цитированием
Старый 19.04.2012, 20:24   #5
swat16
 
Регистрация: 07.04.2012
Сообщений: 4
По умолчанию

извиняюсь. надо найти точку минимума функции методом случайного поиска с возвратом и наилучшей пробы. функция f(x,y)=x*e^(-x^2-y^2)
swat16 вне форума Ответить с цитированием
Старый 19.04.2012, 20:27   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну так ты расставь комментарии, что в какой строке для чего делаешь.
И, как показывает практика, в результате такой работы автор сам находит ошибку в программе.
s-andriano вне форума Ответить с цитированием
Старый 20.04.2012, 10:30   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так перед else точка с запятой БЫТЬ НЕ МОЖЕТ.


а вообще ОЧЕНЬ рекомендую писать код структурировано ("лесенкой").
это и понимание облегчает, и ошибок в структуре алгоритмам позволяет избежать.

вот как должен примерно выглядеть ваш код:
Код:
program poisk;
uses crt;

function f(x, y: real): real;
begin 
  f := x * exp(-sqr(x) - sqr(y)); 
end;

var x1, x2, B, M, t, R, N, y1, y2, ksi1, ksi2, ksin: real;
  k, j: integer;
begin
  k := 0;
  j := 1;
  WriteLn('vvedite x1');
  ReadLn(x1);
  WriteLn('vvedite x2');
  ReadLn(x2);
  WriteLn('vvedite B');
  ReadLn(B);
  WriteLn('vvedite M');
  ReadLn(M);
  WriteLn('vvedite t');
  ReadLn(t);
  WriteLn('vvedite R');
  ReadLn(R);
  WriteLn('vvedite N');
  ReadLn(N);
  while true do begin
    ksi1 := 2 * Random - 1;
    ksi2 := 2 * Random - 1;
    ksin := sqrt(ksi1 * ksi1 + ksi2 * ksi2);
    y1 := x1 + t * ksi1 / ksin;
    y2 := x2 + t * ksi2 / ksin;
    if f(y1, y2) < f(x1, x2) then begin
      x1 := y1;
      x2 := y2;
      k := k + 1;
      if k = N then break
      else j := 1;
    end
    else begin
      if j < M then j := j + 1
      else 
      if t < R then break
      else
        t := B * t; j := 1;
    end;
  end;
  WriteLn(x1, x2, f(x1, x2));
  ReadLN;
end.

p.s. что код делает, для чего там break-и вставлены и вообще - я не смотрел.
просто убрал ошибку и отформатировал текст....

Последний раз редактировалось Serge_Bliznykov; 20.04.2012 в 10:36.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка правильности кода программы Petrowa C++ Builder 4 25.11.2015 18:41
Заказ программы: проверка доменов tschad78 Фриланс 3 02.06.2011 15:33
проверка программы PradoSV Общие вопросы C/C++ 0 14.12.2009 21:26
Проверка работы программы... DimkinStd Общие вопросы Delphi 3 26.12.2006 13:24