Написать код по блок-схеме - VB (171847)
Формулировка задачи:
дана блок схема. не могу переделать на язык программирования. помогите, плиз!!!Метод Симпсона.docx вот здесь
Решение задачи: «Написать код по блок-схеме»
textual
Листинг программы
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit; Label1: TLabel; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; GroupBox6: TGroupBox; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; StringGrid1: TStringGrid; Image1: TImage; GroupBox7: TGroupBox; Edit7: TEdit; Edit8: TEdit; Label7: TLabel; Label8: TLabel; Label9: TLabel; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Cells[0,0]:=' Квадратурная формула'; StringGrid1.Cells[1,0]:=' Решение'; StringGrid1.Cells[2,0]:=' Погрешность'; StringGrid1.Cells[0,1]:='Прямоугольников'; StringGrid1.Cells[0,2]:='Трапеций'; StringGrid1.Cells[0,3]:='Симпсона'; StringGrid1.Cells[0,4]:='Чебышева'; StringGrid1.Cells[0,5]:='Гаусса'; Edit1.Text:='4000'; Edit3.Text:='0,0001'; Edit4.Text:='0,0001'; Edit5.Text:='7'; Edit6.Text:='8'; Edit7.Text:='1'; Edit8.Text:='0,6'; end; Procedure TForm1.Button1Click(Sender: TObject); const c=8; var n,n1,n2,n3,i:integer; h,h0,h1,h2,xi,xj,a,b,sum:real; ti,Ai:array [1..c,1..c]of real; summ,R:array [1..6]of real; Procedure Uslovie; begin a:=StrToFloat(Edit8.Text); b:=StrToFloat(Edit7.Text); n1:=StrToInt(Edit1.Text); n2:=StrToInt(Edit5.Text); n3:=StrToInt(Edit6.Text); h1:=StrToFloat(Edit3.Text); h2:=StrToFloat(Edit4.Text); end; Function f(x:real):real; begin f:=(3*x+2)/(2*x-1); end; Procedure Dubl; var i:integer; s,v:real; begin sum:=0; h1:=2*h1; i:=1; s:=f(a)/2; v:=f(b)/2; xi:=a+h1; repeat sum:=sum+f(xi); xi:=xi+h1; i:=i+1; until xi>=b; sum:=h1*(sum+s+v); end; Procedure Rectangular; var i:integer; begin i:=1; xi:=a; h0:=(b-a)/n1; repeat summ[1]:=summ[1]+h0*f(xi); xi:=xi+h0; i:=i+1; until i=(n1-1); i:=0; xi:=a+h0; repeat summ[2]:=summ[2]+h0*f(xi); xi:=xi+h0; i:=i+1; until i=n1; StringGrid1.Cells[1,1]:=FloatToStr((summ[1]+summ[2])/2); end; Procedure Trapeze; var i:integer; s,v:real; begin i:=1; n:=Round((b-a)/h1); s:=f(a)/2; v:=f(b)/2; xi:=a+h1; repeat summ[3]:=summ[3]+f(xi); xi:=xi+h1; i:=i+1; until i=n; summ[3]:=h1*(summ[3]+s+v); Dubl; R[3]:=(summ[3]-sum)/3; StringGrid1.Cells[1,2]:=FloatToStr(summ[3]); StringGrid1.Cells[2,2]:=FloatToStr(R[3]); end; Procedure Simpson; var i:integer; s,p,v:real; begin s:=0; v:=0; p:=0; i:=0; s:=f(a)+f(b); xi:=a+h2; repeat p:=p+f(xi); xi:=xi+2*h2; i:=i+1; until xi>=b-h2; i:=0; xi:=a+2*h2; repeat v:=v+f(xi); xi:=xi+2*h2; i:=i+1; until xi>=b-2*h2; summ[4]:=(h2/3)*(s+4*p+2*v); StringGrid1.Cells[1,3]:=FloatToStr(summ[4]); end; Procedure Pogreshnost; var i:integer; s,p,v:real; begin i:=0; s:=0; v:=0; p:=0; sum:=0; h2:=2*h2; n:=Round((b-a)/h2); s:=f(a)+f(b); xi:=a+h2; repeat p:=p+f(xi); xi:=xi+2*h2; i:=i+1; until xi>=b-h2; i:=0; xi:=a+2*h2; repeat v:=v+f(xi); xi:=xi+2*h2; i:=i+1; until xi>=b-2*h2; sum:=(h2/3)*(s+4*p+2*v); R[4]:=(summ[4]-sum)/15; StringGrid1.Cells[2,3]:=FloatToStr(R[4]); end; Procedure Uzli; begin ti[2,1]:=-0.577350; ti[2,2]:=0.577350; ti[3,1]:=-0.707107; ti[3,2]:=0; ti[3,3]:=0.707107; ti[4,1]:=-0.794654; ti[4,2]:=-0.187592; ti[4,3]:=0.187592; ti[4,4]:=0.794654; ti[5,1]:=-0.832498; ti[5,2]:=-0.374541; ti[5,3]:=0; ti[5,4]:=0.374541; ti[5,5]:=0.832498; ti[6,1]:=-0.866247; ti[6,2]:=-0.422519; ti[6,3]:=-0.266635; ti[6,4]:=0.266635; ti[6,5]:=0.422519; ti[6,6]:=0.866247; ti[7,1]:=-0.883862; ti[7,2]:=-0.529657; ti[7,3]:=-0.323912; ti[7,4]:=0; ti[7,5]:=0.323912; ti[7,6]:=0.529657; ti[7,7]:=0.883862; end; Procedure Chebishev; var i:integer; summa:real; begin summa:=0; Uzli; for i:=1 to n2 do begin xi:=(a+b)/2+((b-a)/2)*ti[n2,i]; summa:=summa+f(xi); xi:=0; end; summ[5]:=((b-a)/n2)*summa; StringGrid1.Cells[1,4]:=FloatToStr(summ[5]); end; Procedure Uzli2; begin ti[1,1]:=0; Ai[1,1]:=2; ti[2,1]:=-0.57735027; Ai[2,1]:=1; ti[2,2]:=0.7735027; Ai[2,2]:=1; ti[3,1]:=-0.77459667; Ai[3,1]:=0.55555556; ti[3,2]:=0; Ai[3,2]:=0.88888889; ti[3,3]:=0.77459667; Ai[3,3]:=0.55555556; ti[4,1]:=-0.86113631; Ai[4,1]:=0.34785484; ti[4,2]:=-0.33998104; Ai[4,2]:=0.65214516; ti[4,3]:=0.33998104; Ai[4,3]:=0.65214516; ti[4,4]:=0.86113631; Ai[4,4]:=0.34785484; ti[5,1]:=-0.90617985; Ai[5,1]:=0.23692688; ti[5,2]:=-0.53846931; Ai[5,2]:=0.47862868; ti[5,3]:=0; Ai[5,3]:=0.56888889; ti[5,4]:=0.53846931; Ai[5,4]:=0.47862868; ti[5,5]:=0.90617985; Ai[5,5]:=0.23692688; ti[6,1]:=-0.93246951; Ai[6,1]:=0.17132450; ti[6,2]:=-0.66120939; Ai[6,2]:=0.36076158; ti[6,3]:=-0.23861919; Ai[6,3]:=0.46791394; ti[6,4]:=0.23861919; Ai[6,4]:=0.46791394; ti[6,5]:=0.66120939; Ai[6,5]:=0.36076158; ti[6,6]:=0.93246951; Ai[6,6]:=0.17132450; ti[7,1]:=-0.94910791; Ai[7,1]:=0.12948496; ti[7,2]:=-0.74153119; Ai[7,2]:=0.27970540; ti[7,3]:=-0.40584515; Ai[7,3]:=0.38183006; ti[7,4]:=0; Ai[7,4]:=0.41795918; ti[7,5]:=0.40584515; Ai[7,5]:=0.38183006; ti[7,6]:=0.74153119; Ai[7,6]:=0.27970540; ti[7,7]:=0.94910791; Ai[7,7]:=0.12948496; ti[8,1]:=-0.96028986; Ai[8,1]:=0.10122854; ti[8,2]:=-0.79666648; Ai[8,2]:=0.22238104; ti[8,3]:=-0.52553242; Ai[8,3]:=0.31370664; ti[8,4]:=-0.18343464; Ai[8,4]:=0.36268378; ti[8,5]:=0.18343464; Ai[8,5]:=0.36268378; ti[8,6]:=0.52553242; Ai[8,6]:=0.31370664; ti[8,7]:=0.79666648; Ai[8,7]:=0.22238104; ti[8,8]:=0.96028986; Ai[8,8]:=0.10122854; end; Procedure Gauss; var i:integer; summa:real; begin summa:=0; Uzli2; for i:=1 to n3 do begin xi:=(a+b)/2+((b-a)/2)*ti[n3,i]; summa:=summa+Ai[n3,i]*f(xi); xi:=0; end; summ[6]:=((b-a)/2)*summa; StringGrid1.Cells[1,5]:=FloatToStr(summ[6]); end; begin for i:=1 to 6 do summ[i]:=0; Uslovie; Rectangular; Trapeze; Simpson; Pogreshnost; if (n2>7)or(n2<2) then begin ShowMessage('Количество узлов должно быть не больше 7 и не меньше 2'); exit; end; Chebishev; if n3>8 then begin ShowMessage('Количество узлов должно быть не больше 8'); exit; end; Gauss; end; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д