Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АХРАМЕЙКО Му курс ЭУП.doc
Скачиваний:
1
Добавлен:
12.07.2019
Размер:
296.96 Кб
Скачать

Приложение а Образец оформления исходных текстов

(рекомендуемое)

01 procedure TfrmMain.btnRunClick(Sender: TObject);

02 type

03 massiv = array [1..50] of real;

04 var

05 mpc, h: real;

06 t, k: integer;

07 y, c, i, a, yF, D: massiv;

08 begin

09 a[1] := StrToFloat(edCa1.Text);

10 a[2] := StrToFloat(edCa2.Text);

11 mpc := StrToFloat(edMPC.Text);

12 h := StrToFloat(edh.Text);

13 t := StrToInt(edt.Text);

14 y[1] := a[1] / (1 - mpc);

15 c[1] := mpc * y[1];

16 c[2] := mpc * y[1];

17 y[2] := c[1] + a[2];

18 i[1] := 0;

19 i[2] := 0;

20 D[1] := -1 * StrToFloat(edD.Text);

21 if cbGrowth.Checked = true then

22 D[2] := D[1] * power(1 + StrToFloat(edx.Text),2)

23 else

24 D[2] := D[1];

25 yF[1] := StrToFloat(edyF.Text);

26 if cbGrowth.Checked = true then

27 yF[2] := yF[1] * power(1 + StrToFloat(edx.Text),2)

28 else

29 yF[2] := yF[1];

30 if cbMin.Checked = false then

31 for k := 3 to t + 1 do

32 begin

33 c[k] := mpc * y[k - 1];

34 a[k] := a[2];

35 i[k] := h * (y[k - 1] - y[k - 2]);

36 y[k] := a[k] + c[k] + i[k];

37 end

37 else

39 if cbGrowth.Checked = true then

40 for k := 3 to t + 1 do

41 begin

42 c[k] := mpc * y[k - 1];

43 a[k] := a[2] * power(1 + StrToFloat(edx.Text),k);

44 D[k] := StrToFloat(edD.Text) *

45 power(1 + StrToFloat(edx.Text),k);

46 yF[k] := StrToFloat(edyF.Text) *

47 power(1 + StrToFloat(edx.Text),k);

48 if h * (y[k - 1] - y[k - 2]) >= -1 * D[k] then

49 i[k] := h * (y[k - 1] - y[k - 2])

50 else

51 i[k] := -1 * D[k];

52 if a[k] + c[k] + i[k] <= yF[k] then

53 y[k] := a[k] + c[k] + i[k]

54 else

55 y[k] := yF[k];

56 end

57 else

58 for k := 3 to t + 1 do

59 begin

60 c[k] := mpc * y[k - 1];

61 a[k] := a[2];

62 D[k] := StrToFloat(edD.Text);

63 yF[k] := StrToFloat(edyF.Text);

64 if h * (y[k - 1] - y[k - 2]) >= -1 * D[k] then

65 i[k] := h * (y[k - 1] - y[k - 2])

66 else

67 i[k] := -1 * D[k];

68 if a[k] + c[k] + i[k] <= yF[k] then

69 y[k] := a[k] + c[k] + i[k]

70 else

71 y[k] := StrToFloat(edyF.Text);

72 end;

73 StringGrid.RowCount := t + 2;

74 Chart.Series[0].Clear;

75 Chart.Series[1].Clear;

76 Chart.Series[2].Clear;

77 Chart.Series[3].Clear;

78 Chart.Series[4].Clear;

79 Chart.Series[5].Clear;

80 Chart.Series[1].Active := cbI.Checked;

81 Chart.Series[2].Active := cbC.Checked;

82 Chart.Series[3].Active := cbD.Checked;

83 Chart.Series[4].Active := cbyF.Checked;

84 Chart.Series[5].Active := cbA.Checked;

85 for k := 1 to t + 1 do

86 begin

87 Chart.Series[0].AddXY(k,y[k],'',clRed);

88 Chart.Series[1].AddXY(k,i[k],'',clGreen);

89 Chart.Series[2].AddXY(k,c[k],'',clYellow);

90 Chart.Series[3].AddXY(k,-D[k],'',clBlue);

91 Chart.Series[4].AddXY(k,yF[k],'',clWhite);

92 Chart.Series[5].AddXY(k,a[k],'',clGray);

93 StringGrid.Cells[0,k] := IntToStr(k-1);

94 StringGrid.Cells[1,k] := IntToStr(round(y[k]));

95 StringGrid.Cells[2,k] := IntToStr(round(c[k]));

96 StringGrid.Cells[3,k] := IntToStr(round(i[k]));

97 StringGrid.Cells[4,k] := IntToStr(round(a[k]));

98 end;

99 end;