Студопедия — If b>c then
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

If b>c then






Begin

x: =b; b: =c; c: =x;

end;

If a> b then

Begin

x: =a; a: =b; b: =x;

end;

// Проверка существования такого треугольника

If (a< =0) or ((a+b)< =c) then

Begin

showmessage('Это не треугольник');

edit2.SetFocus;

exit;

end;

fl: =false;

iw: =image1.Width;

ih: =image1.Height;

k: =iw / ak; //коэффициент масштабирования

if c< =ak then

Begin

fl: =true;

showmessage('Пройдет');

End

Else

//сторона треугольника больше диагонали квадрата

If c> ak*sqrt(2) then

Begin

showmessage('Не пройдет');

exit;

End

Else

Begin

y1: =sqrt(sqr(c)-sqr(ak));

ap: =4*sqr(ak)+4*sqr(y1);

bp: =4*y1*(sqr(a)-sqr(b)-sqr(ak)-sqr(y1));

cp: =sqr(sqr(b))+sqr(sqr(a))+sqr(sqr(ak))+sqr(sqr(y1))+

2*(-sqr(a)*sqr(b)+sqr(b)*sqr(ak)+sqr(b)*sqr(y1)-sqr(a)*sqr(ak)-

sqr(a)*sqr(y1)+sqr(ak)*sqr(y1)-2*sqr(ak)*sqr(b));

d: =sqr(bp)-4*ap*cp;

If d< 0 then

Begin

showmessage('Не пройдет');

exit;

end;

y: =(-bp+sqrt(d))/(2*ap);

x: =sqr(b)-sqr(y);

If (x< 0) or (y> ak) then

Begin

showmessage('Не пройдет');

exit;

end;

x: =sqrt(x);

If y> ak then

Begin

showmessage('Не пройдет');

exit;

End

Else

Begin

fl: =true;

showmessage('Пройдет');;

end;

end;

If not fl then

exit;

p[0].X: =0;

p[0].Y: =0;

// очистка Image и задание параметров изображения

image1.Picture: =nil;

image1.Canvas.Pen.Color: =clred;

//image1.Canvas.Brush.Style: =bscross;

image1.Canvas.Brush.Color: =clred;

image1.Canvas.Rectangle(0, 0, round(ak*k), round(ak*k));

image1.Canvas.Brush.Color: =clgreen;

//Если большая сторона треугольника меньше

// стороны квадрата

if c< =ak then

Begin

p[1].X: =round(c*k);

p[1].Y: =0;

x: =(sqr(b)-sqr(a)+sqr(c))/(2*c);

y: =sqrt((sqr(b)-sqr(x)));

p[2].x: =round(x*k);

p[2].y: =round(y*k);

image1.Canvas.Polygon(p);

exit;

end;

//Если большая сторона треугольника больше

// стороны квадрата

y1: =sqrt(sqr(c)-sqr(ak));

p[1].X: =round(ak*k);

p[1].Y: =round(y1*k);

// x: =(sqr(b)-sqr(a)+sqr(y1)-2*y*y1+sqr(ak))/(2*ak);

// y: =sqrt((sqr(b)-sqr(x)));

p[2].x: =round(x*k);

p[2].y: =round(y*k);

image1.Canvas.Polygon(p);

 

end;

// Обработка вводимых символов в поля Edit

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

Var

edit: tedit;

Begin

edit: =sender as tedit;

Case key of

'0'..'9', #8:;

'-': begin

if (edit.Text='') then

key: =#0

Else

if (edit.Text< > '') and ((copy(edit.Text, length(edit.Text), 1)='E') or

(copy(edit.Text, length(edit.Text), 1)='e')) then

key: ='-'

Else

key: =#0;

end;

'+': begin

if (edit.Text='') then

key: ='+'

Else

if (edit.Text< > '') and ((copy(edit.Text, length(edit.Text), 1)='E') or

(copy(edit.Text, length(edit.Text), 1)='e')) then

key: ='+'

Else

key: =#0;

end;

', ', '.': begin

key: =decimalseparator;

If pos(decimalseparator, edit.Text)< > 0 then

key: =#0

end;

'E', 'e': begin

key: ='E';

if ((pos('E', edit.Text)< > 0) or (pos('e', edit.Text)< > 0))

or ((length(edit.Text)=1)

and ((copy(edit.Text, 1, 1)='-') or

(copy(edit.Text, 1, 1)='+'))) or

((length(edit.Text)=0)

And

((pos('E', edit.Text)=0) or (pos('e', edit.Text)=0))) then

key: =#0;

end;

#13: case edit.Tag of //обработка нажатия клавиши Enter

// предварительно вручную устанавливаем свойства tag

// для каждого edit-а

0: edit2.SetFocus;

1: edit3.SetFocus;

2: edit4.SetFocus;

3: button1.SetFocus;

End

e l se

key: =#0;

end;

 

end;

 

 

end.

 

Обработка нажатия клавиш при вводе достаточно сложная процедура и не идеальная. Но все-таки она требует пояснений.

С одной стороны для всех Edit-ов обработка одинакова, за исключением обработки нажатия кпавиши Enter. Поэтому объявлена переменная edit: tedit, которой в начале процедуры присваивается значение параметра sender: edit: =sender as tedit. Для выполнения различных действий при нажатии Enter для каждого Edit-а установлено свое, отличное от других, свойство Tag. Для предоставления пользователю возможности ввода чисел в нормальной форме обрабатывается нажатие клавиш латинских ‘E’ и ‘e’ для ввода порядка числа. Вместо обработки каждой нажатой клавиши можно было обработать ошибки конвертирования при преобразовании из строки в число.

 







Дата добавления: 2014-11-10; просмотров: 485. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия