Вводятся координаты вершин треугольников(сохр в файле). Выбрать треугольник с наибольшей площадью - PascalABC.NET
Формулировка задачи:
По заданию необходимо, чтобы вводимая последовательность чисел сохранялась в файле(это я сделала) и представляла собой массив записей. Я не понимаю, как по этому файлу находить площади треугольников. Формулу-то знаю(). Но как это воспроизвести в Паскале?
вот это сохраняет координаты в файл и выводит его. А дальше не соображу... Помогите, пожалуйста, разобраться!
Решение задачи: «Вводятся координаты вершин треугольников(сохр в файле). Выбрать треугольник с наибольшей площадью»
textual
Листинг программы
program poisk; const N = 10; type coordinates = record x, y: real; end; type ft = file of coordinates; var f: ft; mas: array[0..N-1] of coordinates; i, j, k, imx, jmx, kmx: integer; max, s: real; a :coordinates; begin assign(f, 'in'); rewrite(f); for i := 1 to N do begin writeln('Введите кординаты точки ',i); write('x=');readln(a.x); write('y=');readln(a.y); write(f,a); end; reset(f); writeln('Координаты точек'); for i:=0 to filesize(f)-1 do begin read(f,mas[i]); write(i+1:2,'(',mas[i].x:5:2,',',mas[i].y:5:2,') '); if i=5 then writeln; end; close(f); writeln; max:=0; //пусть макс. площадь=0 for i:=0 to N-3 do for j:=i+1 to N-2 do for k:=j+1 to N-1 do begin //считаем площадь s:=abs(((mas[i].x-mas[k].x)*(mas[j].y-mas[k].y)-(mas[j].x-mas[k].x)*(mas[i].y-mas[k].y))/2); if s>max then//если больше максимума begin max:=s;//это макс. imx:=i;//номера точек jmx:=j; kmx:=k; end; end; writeln('Самую большая площадь=',max:0:2,' имеет треугольник, образованный точками:'); writeln(imx+1:2,'(',mas[imx].x:5:2,',',mas[imx].y:5:2,')'); writeln(jmx+1:2,'(',mas[jmx].x:5:2,',',mas[jmx].y:5:2,')'); writeln(kmx+1:2,'(',mas[kmx].x:5:2,',',mas[kmx].y:5:2,')'); end.
Объяснение кода листинга программы
- Объявлены переменные: N - количество точек (константа); coordinates - тип данных для хранения координат точек; ft - тип данных для работы с файлом; mas - массив для хранения координат точек; i, j, k, imx, jmx, kmx - счётчики для обработки цикла; max, s - переменные для хранения площади и её максимального значения; a - переменная типа coordinates для ввода координат точки; f - файл для ввода и вывода данных.
- Создаётся файл для записи координат точек и открывается на запись.
- Запрашивается ввод координат каждой точки и записывается в файл.
- Файл закрывается и открывается на чтение.
- Выводятся координаты всех точек.
- Находится максимальная площадь.
- Находится треугольник с наибольшей площадью.
- Выводится сообщение с координатами этого треугольника.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д