If n>121 then
Begin Form1.Edit1.Text: ='121'; n: =121; end; man: =strtointdef(Form1.Edit2.Text, 0); women: =strtointdef(Form1.Edit3.Text, 0); pm: =man div 4; If man mod 4> 0 then pm: =pm+1; pw: =women div 4; If women mod 4> 0 then pw: =pw+1; if (pw+pm< =n) and (pw+pm< > 0) then Begin x: =1; y: =1; for i: =1 to n do Begin Form1.Image1.Canvas.Rectangle(x*50-40, y*40-30, x*50, y*40); inc(x); If x> m then Begin inc(y); x: =1; end; end; x: =1; y: =1; k: =0; for i: =1 to n do Begin if k=0 then Begin If man> 0 then Form1.Image1.Canvas.Brush.Color: =clBlue Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-35, y*40-25, x*50-30, y*40-20); dec(man); If man> 0 then Form1.Image1.Canvas.Brush.Color: =clBlue Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-15, y*40-25, x*50-10, y*40-20); dec(man); If man> 0 then Form1.Image1.Canvas.Brush.Color: =clBlue Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-35, y*40-15, x*50-30, y*40-10); dec(man); If man> 0 then Form1.Image1.Canvas.Brush.Color: =clBlue Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-15, y*40-15, x*50-10, y*40-10); dec(man); if man< =0 then k: =1; End Else Begin If women> 0 then Form1.Image1.Canvas.Brush.Color: =clRed Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-35, y*40-25, x*50-30, y*40-20); dec(women); If women> 0 then Form1.Image1.Canvas.Brush.Color: =clRed Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-15, y*40-25, x*50-10, y*40-20); dec(women); If women> 0 then Form1.Image1.Canvas.Brush.Color: =clRed Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-35, y*40-15, x*50-30, y*40-10); dec(women); If women> 0 then Form1.Image1.Canvas.Brush.Color: =clRed Else Form1.Image1.Canvas.Brush.Color: =clWhite; Form1.Image1.Canvas.rectangle(x*50-15, y*40-15, x*50-10, y*40-10); dec(women); end; inc(x); If x> m then Begin inc(y); x: =1; end; end; End Else Form1.Image1.Canvas.TextOut(10, 10, 'Невозможно разместить больных'); end;
procedure TForm1.Button2Click(Sender: TObject); Begin Close; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); Var edit: tedit; Begin edit: =sender as tedit; Case key of '0'..'9', #8:; #13: case edit.TabOrder of 1: Form1.Edit2.SetFocus; 2: Form1.Edit3.SetFocus; 3: Form1.button1.SetFocus; end; Else key: =#0; end; end;
procedure TForm1.FormActivate(Sender: TObject); Begin edit1.SetFocus; end;
end.
Результат выполнения приложения показан на рис. 1.12. Если количество палат превышает 121, то оно считается равным 121 палате. Рекомендуем самостоятельно изучить данное приложение. Приведенное решение содержит операторы цикла да еще с внутренними ветвлениями, поэтому таких решений можно требовать от учащихся при выполнении второй или даже пятой лабораторных работ. Рис.1.12 Результат выполнения программы
|