Type Point = record x: integer; y: integer; end; Line = record P: Point; Q: Point; Len: double; end;
procedure LineLength(var pL: Line); // Вычисляет и сохраняет значение длины отрезка begin pL.Len := sqrt(sqr(pL.Q.x - pL.P.x) + sqr(pL.Q.y - pL.P.y)) end;
var A, B, C, D: Point; AB, AC, AD, BC, BD, CD: Line;
begin writeln('Введите попарно координаты четырех точек'); readln(A.x, A.y, B.x, B.y, C.x, C.y, D.x, D.y); with AB do begin P.x := A.x; P.y := A.y; Q.x := B.x; Q.y := B.y; LineLength(AB); end; with AC do begin P.x := A.x; P.y := A.y; Q.x := C.x; Q.y := C.y; LineLength(AC); end; with AD do begin P.x := A.x; P.y := A.y; Q.x := D.x; Q.y := D.y; LineLength(AD); end; with BC do begin P.x := B.x; P.y := B.y; Q.x := C.x; Q.y := C.y; LineLength(BC); end; with BD do begin P.x := B.x; P.y := B.y; Q.x := D.x; Q.y := D.y; LineLength(BD); end; with CD do begin P.x := C.x; P.y := C.y; Q.x := D.x; Q.y := D.y; LineLength(CD); end; writeln(AB.Len, ' ', AC.Len, ' ', AD.Len, ' ', BC.Len, ' ', BD.Len, ' ', CD.Len); if AB.Len = CD.Len then begin // AB и CD - претенденты if AC.Len = BD.Len then // Нашли ABDC writeln('Параллелограмм ABDC') else if AD.Len = BC.Len then // Нашли ABCD writeln('Параллелограмм ABCD') end else if AC.Len = BD.Len then begin // AC и BD - претенденты if AD.Len = BC.Len then // Нашли ACBD writeln('Параллелограмм ACBD') else if AB.Len = CD.Len then // Нашли ABCD writeln('Параллелограмм ACDB') end else if AD.Len = BC.Len then begin // AD и ВС - претенденты if AC.Len = BD.Len then // Нашли ADBC writeln('Параллелограмм ADBC') else if AB.Len = CD.Len then // Нашли ADCB writeln('Параллелограмм ADCB') end else writeln('Параллелограмм построить невозможно'); end.
Контрольный прогон:
Введите попарно координаты четырех точек 5 1 10 3 8 9 3 6 5.3851648071345 8.54400374531753 5.3851648071345 6.32455532033676 7.61577310586391 5.8309518948453 Параллелограмм построить невозможно
begin writeln('Введите номер месяца:'); readln(a); case a of 1, 2, 12: writeln('Зима'); 3..5: writeln('Весна'); 6..8: writeln('Лето'); 9..11: writeln('Осень') else writeln('Ошибка'); end; end.
Текст на внешних носителях сохраняется в виде файла. Преимущества компьютерного документа: Преимущества компьютерного документа: Компактное размещениеКомпактное.
Программа рисует узор (см. вложение), состоящий из 20 эллипсов, каждый из которых повёрнут на 9 градусов относительно предыдущего. Угол поворота задаётся переменной а, которая изменяется от 0 до 180 (так как 20*9=180). Cos(a) и Sin(a) задают положение эллипса.
Каждый эллипс рисуется с помощью 6280 точек (цикл по k) командой PutPixel? начиная с крайней левой точки эллипса. Cos(t) и Sin(t) задают отклонение каждой точки от "центра" эллипса.
PS Кстати, в программе есть ошибка - цвет надо задавать как "clWhite", a не "White" - хотя задавать белый вобще нет смысла - его не будет видно :)