|
|
iznosdet.PAS |
|
{* Процента износа детали *}Unit IZNOSDET;Interface Implementation Begin writeln('Определение процента износа детали по заданным координатам'); End. Program pas46663; Uses iznosdet.pas; {* Эту строку можно удалить *} Uses wincrt; {* Вызов внешних функций *} Var {* В работе нам потребуются переменные: *} i : integer; j : integer; n : integer; t : Array[1..100, 1..2] Of real; a : Array[1..100, 1..2] Of real; fin : text; fout : text; s1 : real; s2 : real; q : real; Procedure per(x1 : real; y1 : real; x2 : real; y2 : real; x3 : real; y3 : real; x4 : real; y4 : real; Var {* Объявление переменных *} x : real); y : real); Var {* Объявление переменных *} a1 : real; a2 : real; b1 : real; b2 : real; c1 : real; c2 : real; Begin a1 := y2 - y1; b1 := x1 - x2; c1 := - x1 * (y2 - y1) + y1 * (x2 - x1); a2 := y4 - y3; b2 := x3 - x4; c2 := - x3 * (y4 - y3) + y3 * (x4 - x3); y := (a1 * c2 - a2 * c1) / (a2 * b1 - a1 * b2); x := (b1 * c2 - b2 * c1) / (b2 * a1 - b1 * a2); Function square(x1 : real); y1 : real); x2 : real); y2 : real); x3 : real); y3 : real); Var {* Необходимые переменные *} a : real; b : real; c : real; s : real; p : real; Begin a := sqrt(sqr(x2 - x1) + sqr(y2 - y1)); b := sqrt(sqr(x3 - x1) + sqr(y3 - y1)); c := sqrt(sqr(x2 - x3) + sqr(y2 - y3)); p := (a + b + c) / 2; s := sqrt(p * (p - a) * (p - b) * (p - c)); square := s; End; Begin assign(fin, 'figure.In'); {* Привязка переменной fin к файлу 'figure.In' *} reset(fin); {* Подготовка переменной fin для чтения из файла *} readln(fin, n); For i := 1 To n * 2 Do {* Увеличиваем i от 1 до n с шагом 1 *} read(fin, t[i, 1], t[i, 2]); j := 1; For i := 1 To n - 1 Do {* Цикл для i => [1 .. n] *} Begin per(t[j, 1], t[j, 2], t[j + 1, 1], t[j + 1, 2], t[j + 2, 1], t[j + 2, 2], t[j + 3, 1], t[j + 3, 2], a[i, 1], a[i, 2]); j := j + 2; End; per(t[1, 1], t[1, 2], t[2, 1], t[2, 2], t[2 * n - 1, 1], t[2 * n - 1, 2], t[2 * n, 1], t[2 * n, 2], a[n, 1], a[n, 2]); s1 := 0; s2 := 0; For j := 2 To 2 * n - 1 Do {* Увеличиваем j от 2 до 2 с шагом 1 *} s1 := s1 + square(t[1, 1], t[1, 2], t[j, 1], t[j, 2], t[j + 1, 1], t[j + 1, 2]); For j := 2 To n - 1 Do {* Цикл для j => [2 .. n] *} s2 := s2 + square(a[1, 1], a[1, 2], a[j, 1], a[j, 2], a[j + 1, 1], a[j + 1, 2]); writeln(abs(s2 - s1) / s2 * 100 : 5 : 4); End.... 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|