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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2011, 21:41   #1
Psychoo
 
Регистрация: 05.11.2011
Сообщений: 5
По умолчанию Вычисление интеграла

Подскажите пожалуйста ,где находится ошибка в програме.Она компилируется ,но при подстановке значений(например) a=0,b=3,e=0,001 или же неверно вычисляет.Как увидил проблема в ошибке в коде потому что выбивает exitcode 210.Заранее благодарен.
Код:
program lab4;
var a,b,e,h,S1,S2,R,d:real;i,n,k,j,m:integer;p:Char;
function f(x:real):real;
begin
f:=x*x;
end;
begin
 repeat
 writeln('Vvedit a,b,e');
 readln(a,b,e);
 writeln('1-Left rectangular');
 writeln('2-Right rectangular');
 writeln('3-Middleline rectangular');
 writeln('4-Trapeze');
 writeln('5-Parabola');
 writeln('6-BD');
 readln(n);
 m:=1;
 S1:=(b-a)*f(a);
  repeat
  m:=m*2;
  h:=(b-a)/m;
  S2:=0;
  case n of
  1:
  begin
  for i:=0 to m-1 do S2:=S2+f(a+i*h);
  S2:=S2*h;
  end;
  2:
  begin
  for i:=1 to m do S2:=S2+f(a+i*h);
  S2:=S2*h;
  end;
  3:
  begin
  for i:=1 to m do S2:=S2+f(a+i*h-h/2);
  S2:=h*S2;
  end;
  4:
  begin
  for i:=0 to m-1 do S2:=S2+f(a+i*h)+f(a+(i+1)*h);
  S2:=S2*(h/2);
  end;
  5:
  begin
  for i:=0 to m do S2:=S2+k*f(a+i*h);
  S2:=S2*h/3;
  if(i=0)and(i=m)then k:=1;
  if(i mod 2=0)then k:=2 else k:=4;
  end;
  6:
  begin
  d:=h/4;
  for i:=0 to m-1 do
       for j:=0 to 4 do
       begin
       if (j=0) and (j=4) then K:=7;
       if (j=1) and (j=3) then K:=32;
       if (j=2) then K:=12;
       S2:=K*f(a+i*h+j*d);
       end;
  S2:=S2*((2*d)/45);
  end;
end;
R:=abs(S2-S1);
until R<e;
S1:=S2;
writeln(S2:10:7);
writeln(m);
writeln('Repeat Y/N?');
readln(p);
until p='N';
readln;
end.
Psychoo вне форума Ответить с цитированием
Старый 06.11.2011, 22:16   #2
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

во-первых
Код:
if(i=0)and(i=m)then k:=1
проще записать
Код:
if m=0 then k:=1;
далее
Код:
if (j=0) and (j=4) then K:=7;
if (j=1) and (j=3) then K:=32;
вообще чушь, никогда не выполнится, безполезный код
далее
цикл repeat ... until R<e бесконечен, т. к. R видимо плохо меняется, поэтому переполнение m, вся фишка в этом

Последний раз редактировалось Camaro Chevelle; 06.11.2011 в 22:22.
Camaro Chevelle вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление интеграла; user100 Помощь студентам 2 29.04.2011 15:13
Вычисление определенного интеграла. Diamond2107 Общие вопросы C/C++ 4 29.03.2011 17:55
Вычисление интеграла Anubys Помощь студентам 2 14.03.2011 09:49
Вычисление интеграла StudeHt Помощь студентам 1 01.05.2009 19:16
Вычисление определённого интеграла Mr_Frost Помощь студентам 11 14.03.2009 02:09