Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
230401_MU_-_Osnovy_algoritmizatsii_i_programmir...docx
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

8. В окне текста программы перед разделом implementation введите описание констант и переменных программы:

const

N=5;

{Массив прогноза прибыли} Р : array[0..N-1,1..3,1..3] ofinteger = (((40,-40,30), (-20, 10, 10), (-10,40,-30)), {r=(0-l)}

((50,-70,40), (-30, 70,-30), (-50,20, 30)), {r=(l-2)}

((30,-70,70), (-30, 70,-30), (20,10,-50)), {r=(2-3)}

((-50,-30,70), (50,-50, 70), (30,50,-70)), {r=(3-4)}

((30,-70,70), (-30, 70,-30), ( 40, 0,-50))); {r=(4-5)}

{Массив вероятностей} Prob :array[0..N-1,1..3] ofinteger= ((22,41,37),(27,34,39),(47,33,20),(10,53,37),(41,34,25)); var

Forml :TForml; {Эта запись уже есть в заготовке модуля} capital, year, profit, г : integer; {Инвестированные суммы} money : array[0..2] ofinteger;

9. Запрограммируйте кнопки SpeedButtonlи SpeedButton2 следующим образом:

procedure TForml.SpeedButtonlClick(Sender: Tobject);

{Кнопкарезультатовгода} var first, second, variant, i, code : integer;

s : string;

begin

randomize;

{Случайныйвыборвозможногосостояниярынка} variant := random(lOO);

{Первый и второй разделители отрезка вероятностей) first := Probfr, 1 j; second :=first + Prob[r, 2];

{Начальное значение прибыли перед суммированием}

profit := 0;

for i := 0 to 2 do

vaI(StringGrid2.Cells[0,i + 1], money[i], code); {Получаемчисловыезначениядляинвестицийи

заполняем ими массив money} {Вычисление прибыли для первого варианта) ifvariant<firstthenbegin

for i := 0 to 2 do {Суммированиепопредприятиям} profit := profit + moneyfi] * P[r, i+1, 1];

{Подчеркивание выбранного варианта} Label9.Visible := True;

{Информационная строка} Label8.Caption := 'Возросло евро' end;

{Вычисление прибыли для второго варианта состояния рынка} if(variant>= first) and(variant<second) thenbegin

fori := 0 to 2 do

{Суммирование no предприятиям} profit := profit + money[i] * P[r, i+1, 2];

{Подчеркивание выбранного варианта} LabellO.Visible := True;

Label8.Caption := 'Выросла йена'{Информационная строка}

procedureTForml.SpeedButton2Click(Sender: Tobject); {Кнопка перехода на следующий год} begin

year := year + 1; {Следующийгод}

capital := capital + profit; {Обновляемкапитал}

{Прибыль к началу года равна нулю}

profit := 0;

{Вызываем процедуру ежегодного обновления формы) Refresh;

{Выключаем подчеркивания варианта состояния} Label9.Visible := False; {рынка} LabellO.Visible := False; Label 11.Visible := False; {Гасим информацию о прибыли} Label7.Visible := False; end;

10. В окне текста программы после раздела implementation вве­дите описание метода Refresh формы.

procedureTForml.Refresh; var i, j : integer; s : string;

begin

Str(capital, s);

Forml.Label6.Caption := s + долларов'; Str(year, s);

Forml.Label5.Caption := s + ' год'; Str(profit, s);

Forml.Label7.Caption := s + долларов'; Forml.Label8.Caption := 'Введитесумму'; Forml.SpeedButton2.Enabled := False; Forml.SpeedButtonl.Enabled := False; randomize;

r := random(N); {Выборинвестиционногоклиматаг} for i:=l to 3 do for j := 1 to 3 do begin

Str(P[r, j, i], s);

Forml.StringGridl.Cellsfi, j] := s + ' центов'; end;

for i := 1 to 3 do begin

Str(Prob[r, i], s);

Forml.StringGrid3.Cells[i, 0] := s + ' %'; Forml.StringGrid2.Cells[0, i] := "; end end;

Строку

procedure Refresh;

вставьтевлюбомместераздела type TForml = class(TForm) ... вокнемодуля.

11. Запрограммируйте процедуру создания формы FormCreate.

Для этого дважды щелкните на форме и полученную заготовку процедуры FormCreate заполните следующим образом:

procedure TForml.FormCreate(Sender: TObject); begin

capital := 1000; year := 2000; profit := 0; Refresh;

StringGridl.Cells[l, 0] := 'Возрастетевро'; StringGridl.Cells[2, 0] := 'Возрастетйена'; StringGridl.Cells[3, 0] := 'Возрастетдоллар';

StringGridl.Cells[0, 1] StringGridl.Cells[0, 2] StringGridl.Cells[0, 3] StringGrid2.Cells[0, 0] StringGrid3.Cells[0, 0] end;