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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2013, 10:18   #1
fox82
Новичок
Джуниор
 
Регистрация: 10.12.2013
Сообщений: 2
По умолчанию Помогите переделать прогу с метода половинного деления на метод сканирования

Код:
program lab1c;
uses crt;
label 1;

 var ti,pi,ki,ptn,ptv,ktn,ktv:array[1..3] of real;
     z,ztn,ztv,tn,tv,t,e: real;
     i,k: integer;

    const n=3;
       A: array[1..3] of real=(3.98202,4.03129,4.01946);
       B: array[1..3] of real=(1186.059,1214.645,1266.871);
       C: array[1..3] of real=(226.042,221.205,216.757);
       Y: array[1..3] of real=(0.8,0.1,0.1);
       p0=3.8;

 begin
 clrscr;
  for i:=1 to n do
  ti[i]:=(B[i]/(A[i]-ln(p0)/ln(10)))-C[i];
 writeln('tkip komponentov');
 writeln('metilsiklopentan ti=',ti[1]:3:3);
 writeln(' benzol ti=',ti[2]:3:3);
 writeln(' n-geptan ti=',ti[3]:3:3);
 writeln('sootvetstvyiyt li A,B,C polychennim tkip?');
 write('niz tn=');readln(tn);
 write('verh tv=');readln(tv);
 writeln('tochnost rascheta e=');
 readln(e);
  k:=0;
  repeat
  k:=k+1;
 for i:=1 to n do
 begin
  ptn[i]:=exp((A[i]-B[i]/(C[i]+tn))*ln(10));
  ptv[i]:=exp((A[i]-B[i]/(C[i]+tv))*ln(10));
  ktn[i]:=ptn[i]/p0;
  ktv[i]:=ptv[i]/p0;
 end;
 ztn:=0;ztv:=0;
 for i:=1 to n do
 begin
  ztn:=ztn+Y[i]/ktn[i];
  ztv:=ztv+Y[i]/ktv[i];
 end;
  ztn:=ztn-1;
  ztv:=ztv-1;
  t:=(tn+tv)/2;
 for i:=1 to n do
 begin
  pi[i]:=exp((A[i]-B[i]/(C[i]+t))*ln(10));
  ki[i]:=pi[i]/p0;
 end;
   z:=0;
   for i:=1 to n do
   begin
  z:=z+Y[i]/ki[i];
   end;
 z:=z-1;
 if abs(t-tn)<=e then goto 1;
 if z*ztv>0 then tv:=t else tn:=t;
 until k>100;
 writeln('oshibka!');
 1:
 writeln('rezultat rascheta');
 writeln('temperatura verha t=',t:3:3);
 writeln('chislo iteracii k=',k);
 readln;
end.
а тут готовая прога под метод сканирирования
Код:
program scan; 
 var x,n,h,a,b,y,y1:real; i:integer; 
 function f(x:real):real; 
 begin f:=3*x-cos(x)-1 end; 
begin 
 writeln('a,b,n='); read(a,b,n); 
 h:=(b-a)/n; x:=a; 
 repeat 
 y:=f(x); y1:=f(x+h); 
 if y*y1<0 then begin 
 i:=i+1;writeln ('x=',x:7:5,' i=',i, 'f(x)=',y:7:5); 
 end; 
 x:=x+h; 
 until x>b; 
end.

Последний раз редактировалось Stilet; 15.12.2013 в 11:05.
fox82 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно переделать мою прогу под метод прямого сканирования fox82 Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2013 10:52
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23
Метод половинного деления Hichcog Помощь студентам 0 13.12.2010 17:33
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08