10.06.2011, 01:48 | #11 (permalink) |
Member
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
и вторую процедуру сделать еще для МАХ погрешности,а то есть только для минимальной, и в конце,что бы она выводила,эти 2 погрешности на экран)) |
10.06.2011, 01:48 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме ранее создавались топики которые так или иначе похожи на ваш Помогите разобраться Помогите, пожалуйста, разобраться в схеме Помогите, пожалуйста, разобраться с выбором и совместимостью железа |
10.06.2011, 10:02 | #12 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну что ж - уже ценно!
Цитата:
И еще - на будущее. Делать ли процедуру с параметрами или без таковых - это Ваше, как программиста, право решать. Делайте так, как Вам удобнее, благо Паскаль тут предоставляет широкие возможности. А если препод требует, чтобы непременно были параметры, то таких преподов надо в раннем детстве в ведре топить. Чтобы из них не вырастали преподы. Код:
program a1; uses graph, crt; const n=9; Type Ar=Array[1..n] of real; const Q:Ar=(14.0, 20.5, 35.3, 45.0, 53.8, 62.0, 68.3, 75.2, 82.0); H:Ar=(3.05, 4.90, 10.4, 15.3, 20.1, 25.4, 29.8, 34.6, 40.0); var Hp,dH,x,y:Ar; i,j,grDriver,grMode:integer; a,b,dH_min,dH_max:real; s:String; procedure sum_count(Xsc,Ysc:Ar; var Asc:Real; var Bsc:Real); var s1,s2,s3,s4: real; begin s1:=0; s2:=0; s3:=0; s4:=0; for i:=1 to n do begin s1:=s1+Ysc[i]; s2:=s2+Xsc[i]; s3:=s3+Xsc[i]*Ysc[i]; s4:=s4+sqr(Xsc[i]); end; Asc:=(s1*s2-n*s3)/(sqr(s2)-n*s4); Bsc:=(s3*s2-s4*s1)/(sqr(s2)-n*s4); end; function hr(z:real):real; var m:real; begin m:=a*sqr(z)+b*z; hr:=m; end; BEGIN clrscr; for i:=1 to n do begin x[i]:=q[i]; y[i]:=h[i]/q[i]; end; sum_count(x,y,a,b); dH_min:=1; dH_max:=0; for i:=1 to n do begin Hp[i]:=hr(q[i]); dH[i]:=abs(Hp[i]-h[i])/abs(h[i]); If dH[i]<dH_min then dH_min:=dH[i]; If dH[i]>dH_max then dH_max:=dH[i]; end; textcolor(lightred); writeln('Rezultati vi4islenii:'); writeln; textcolor(white); writeln(' a=',a:8:5); writeln(' b=',b:8:5); writeln; writeln(' |------|-----|---------|---------|---------|'); writeln(' | n | Qi | Hi | Hp | dH |'); writeln(' |------|-----|---------|---------|---------|'); for i:=1 to n do writeln(' | ',i:2,' | ',q[i]:4:1,'|',h[i]:8:2,' |',Hp[i]:8:5,' |',dH[i]:8:5,' |'); writeln(' |------|-----|---------|---------|---------|'); writeln; writeln('Min dH = ',dH_min:8:5); writeln('Max dH = ',dH_max:8:5); readln; GrDriver:=detect; initgraph(GrDriver,GrMode,'C:\BP\BGI'); cleardevice; setcolor(white); outtextXY(300,10,'Zavisimosti_H_i_Hp_ot_Q'); setcolor(lightblue); line(100,20,100,440); line(100,440,500,440); SetTextJustify(RightText,CenterText); For i:=1 to 12 do begin setcolor(lightblue); line(100, 440-35*i, 105, 440-35*i); Str(5*i,s); setcolor(white); If i<12 then OutTextXY(95, 440-35*i, s); end; setcolor(Yellow); OutTextXY(80,20,'Hp'); setcolor(white); OutTextXY(88,20,','); setcolor(lightred); OutTextXY(95,20,' H'); SetTextJustify(CenterText,TopText); For i:=1 to 10 do begin setcolor(lightblue); line(100+40*i, 440, 100+40*i, 435); Str(10*i,s); setcolor(white); If i<10 then OutTextXY(100+40*i, 445, s); end; OutTextXY(500,445,'Q'); SetColor(yellow); MoveTo(100,440); for i:=1 to 1000 do LineTo(Round(100+i*0.4),Round(440-Hr(i*0.1)*7)); SetColor(lightred); SetLineStyle(SolidLn,0,ThickWidth); for i:=1 to n do Circle(Round(100+q[i]*4),Round(440-Hp[i]*7),2); ReadKey; closegraph; END. |
|
13.06.2011, 23:47 | #15 (permalink) |
Member
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
program a1;
uses graph, crt; const n=9; Type Ar=Array[1..n] of real; const Q:Ar=(14.0, 20.5, 35.3, 45.0, 53.8, 62.0, 68.3, 75.2, 82.0); H:Ar=(3.05, 4.90, 10.4, 15.3, 20.1, 25.4, 29.8, 34.6, 40.0); var Hp,dH,x,y:Ar; i,grDriver,grMode:integer; a,b,dH_min,dH_max:real; s:String; procedure sum_count(Xsc,Ysc:Ar; var Asc:Real; var Bsc:Real); var s1,s2,s3,s4: real; begin s1:=0; s2:=0; s3:=0; s4:=0; for i:=1 to n do begin s1:=s1+Ysc[i]; s2:=s2+Xsc[i]; s3:=s3+Xsc[i]*Ysc[i]; s4:=s4+sqr(Xsc[i]); end; Asc:=(s1*s2-n*s3)/(sqr(s2)-n*s4); Bsc:=(s3*s2-s4*s1)/(sqr(s2)-n*s4); end; function hr(z:real):real; var m:real; begin m:=a*sqr(z)+b*z; hr:=m; end; Procedure MinMax(var dH_min,dH_max : real); var i integer; begin dH_min:=1; dH_max:=0; for i:=1 to n do begin Hp[i]:=hr(q[i]); dH[i]:=abs(Hp[i]-h[i])/abs(h[i]); If dH[i]<dH_min then dH_min:=dH[i]; If dH[i]>dH_max then dH_max:=dH[i]; end; end; BEGIN clrscr; for i:=1 to n do begin x[i]:=q[i]; y[i]:=h[i]/q[i]; end; sum_count(x,y,a,b); MiMax(dH_min, dH_max); textcolor(lightred); writeln('Rezultati vi4islenii:'); writeln; textcolor(white); writeln(' a=',a:8:5); writeln(' b=',b:8:5); writeln; writeln(' |------|-----|---------|---------|---------|'); writeln(' | n | Qi | Hi | Hp | dH |'); writeln(' |------|-----|---------|---------|---------|'); for i:=1 to n do writeln(' | ',i:2,' | ',q[i]:4:1,'|',h[i]:8:2,' |',Hp[i]:8:5,' |',dH[i]:8:5,' |'); writeln(' |------|-----|---------|---------|---------|'); writeln; writeln('Min dH = ',dH_min:8:5); writeln('Max dH = ',dH_max:8:5); readln; GrDriver:=detect; initgraph(GrDriver,GrMode,'C:\BP\BGI'); cleardevice; setcolor(white); outtextXY(300,10,'Zavisimosti_H_i_Hp_ot_Q'); setcolor(lightblue); line(100,20,100,440); line(100,440,500,440); SetTextJustify(RightText,CenterText); For i:=1 to 12 do begin setcolor(lightblue); line(100, 440-35*i, 105, 440-35*i); Str(5*i,s); setcolor(white); If i<12 then OutTextXY(95, 440-35*i, s); end; setcolor(Yellow); OutTextXY(80,20,'Hp'); setcolor(white); OutTextXY(88,20,','); setcolor(lightred); OutTextXY(95,20,' H'); SetTextJustify(CenterText,TopText); For i:=1 to 10 do begin setcolor(lightblue); line(100+40*i, 440, 100+40*i, 435); Str(10*i,s); setcolor(white); If i<10 then OutTextXY(100+40*i, 445, s); end; OutTextXY(500,445,'Q'); SetColor(yellow); MoveTo(100,440); for i:=1 to 1000 do LineTo(Round(100+i*0.4),Round(440-Hr(i*0.1)*7)); SetColor(lightred); SetLineStyle(SolidLn,0,ThickWidth); for i:=1 to n do Circle(Round(100+q[i]*4),Round(440-Hp[i]*7),2); ReadKey; closegraph; END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
14.06.2011, 14:42 | #17 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|