Как составить программу для нахождения площади треугольника по формуле герона

Площадь треугольника по формуле Герона

📐 Площадь прямоугольного треугольника. Вычислить площадь и периметр прямоугольного треугольника по двум сторонам. Четыре варианта решения задач.

🟩 Вычисление периметра и площади квадрата. Четыре варианта решения задачи. В том числе вариант решения на PascalABC.NET, без использования устаревших конструкций (с точки зрения этой версии).


Даны три стороны треугольника ABC. Напишите программу вычисления площади треугольника по формуле Герона

Задачи по информатике, программирование на Паскале. Во втором примере используется оператор перехода GOTO. Третий пример написан, с учётом рекомендаций PascalABC.NET (“здоровье кода” составляет 144%).

Задача №1

Задание:
Вычислить площадь треугольника по формуле Герона S = √(p·(p – a)·(p – b)·(p – c))

Program Heron;
Var p, St, A, B, C : Real;
begin
writeln(‘Площадь треугольника по формуле Герона ‘);
write(‘Введите стороны треугольника ‘);
readln(A, B, C);
if (A+B>C) AND (A+C>B) AND (B+C>A) then begin
p := (A + B + C) / 2;
St := Sqrt(p * (p – a) * (p – b) * (p – c));
writeln(‘Площадь треугольника ‘, St:8:5)
end
else writeln(‘Треугольник с такими сторонами не существует’)
end.

Замечание:
В процедуре вывода writeln используется форматированный вывод переменной. St:8:5 обозначает, что для вывода значения переменной S будет использоваться 8 позиций, в том числе 5 после запятой. При этом если целая часть числа будет трёхзначной, то после запятой всё равно будет 5 знаков, а всё число будет занимать 9 позиций.

Задача №2

Задание:
1. Вычислить площадь треугольника по формуле Герона S = √(p·(p – a)·(p – b)·(p – c))
2. Спросить у пользователя “Заверить программу или продолжить выполнение”.

Program Heron;
Label 1;
Var
p, St, A, B, C : Real;
YN : Char;
begin
writeln(‘Площадь треугольника по формуле Герона ‘);
1:
write(‘Введите стороны треугольника ‘);
readln(A, B, C);
if (A+B>C) AND (A+C>B) AND (B+C>A) then begin
p := (A + B + C) / 2; { Найти полупериметр треугольника }
St := Sqrt(p * (p – a) * (p – b) * (p – c));
writeln(‘Площадь треугольника ‘, St:8:5)
end
else writeln(‘Треугольник с такими сторонами не существует’);
write(‘Продолжить выполнение программы? Y / N ‘);
readln(YN);
if (YN = ‘Y’) OR (YN = ‘y’) then GOTO 1
else writeln (‘Вы закончили работу с программой’);
end.

Вычислить площадь треугольника по формуле Герона. Вариант решения на PascalABC.NET

Задание:
Найти площадь треугольника. При решении задачи использовать синтаксис, рекомендуемый в PascalABC.NET.

begin
Println(‘Площадь треугольника по формуле Герона ‘);
Print(‘Введите стороны треугольника ‘);
var (A, B, C) := ReadReal3; // Возвращает кортеж из трёх значений типа real, введенных с клавиатуры.
if (A+B>C) AND (A+C>B) AND (B+C>A) then begin // Проверить существует ли треугольник с такими сторонами.
var p := (A + B + C) / 2; // Найти полупериметр треугольника.
var St := Sqrt(p * (p – a) * (p – b) * (p – c)); // Вычислить площадь. Функция Sqrt – возвращает квадратный корень числа.
Println(‘Площадь треугольника ‘, St)
end
else Println(‘Треугольник с такими сторонами не существует’)
end.


📐 Площадь прямоугольного треугольника. Вычислить площадь и периметр прямоугольного треугольника по двум сторонам. Четыре варианта решения задач.

🟩 Вычисление периметра и площади квадрата. Четыре варианта решения задачи. В том числе вариант решения на PascalABC.NET, без использования устаревших конструкций (с точки зрения этой версии).

Рекламный блок

Информационный блок

На языке программирования Питон можно решить много разных задач, в том числе и по математике. Для начинающих изучать этот язык будет полезно решить задание на вычисление площади треугольника. Одним из способов вычисления этой величины является применение формулы Герона.


Математическая часть задачи

Из школьного курса математики вы знаете, что площадь треугольника можно вычислить по данным длинам трёх его сторон по формуле Герона:

где

p – полупериметр треугольника.

Решение задачи на Питоне

На вход программе подаются целые числа, выводом программы должно являться вещественное число, соответствующее площади треугольника.

Для ввода целых чисел используем функцию int().

Для решения задачи нам необходимо подключить библиотеку с математическими функциями. Делаем это с помощью строки импорта:


import math

Функция для извлечения квадратного корня в этой библиотеке записывается так:

math.sqrt()

Код программы для вычисления площади треугольника

import math  #подключаем библиотеку математических функций

a=int(input("Введите сторону a="))
b=int(input(Введите сторону b=))
c=int(input(Введите сторону c=))
p=(a+b+c)/2
s=math.sqrt(p*(p-a)*(p-b)*(p-c))
print(s)

Результат выполнения кода программы


Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on Linux
12
13
14
72.30793524918272


Второй вариант решения задачи

Также можно воспользоваться стандартной функцией возведения числа в степень. Дело в том, что квадратный корень – это возведение в степень 1/2.

Синтаксис функции такой:

pow(x,y)

где x – число, возводимое в степень, а y – сама степень.

Вот так это запишется по формуле:


s=pow((p*(p-a)*(p-b)*(p-c)),1/2)

Результат выполнения кода:


Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
12
13
14
72.30793524918272

Третий вариант решения задачи

Вместо извлечения корня можно возвести в степень 1/2 или 0,5. При этому функцию использовать не нужно.


s=(p*(p-a)*(p-b)*(p-c))**0.5

Как видим, результат выполнения программы точно такой же.

Python 3.5.2 (default, Dec 2015, 13:05:11)

[GCC 4.8.2] on linux
12
13
14
72.30793524918272

Нахождение натуральных чисел с условием Вычисление площади фигур

Узнай цену своей работы

Формулировка задачи:

ВЫЧЕСЛИТЬ ПЛОЩАДЬ ТРЕУГОЛЬНИКА ПО ФОРМУЛЕ ГЕРОНА
S=√p(p-a)(p-b)(p-c)
где p-полупериметр
a,b,c-стороны

Код к задаче: «Вычислить площадь треугольника по формуле Герона»

textual

Листинг программы

var
a,b,c,p,s:real;
BEGIN
 writeln('введите длины сторон');
 readln(a,b,c);
 p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('s= ', s:8:3);
 END.

Дорогая передача! Во субботу чуть не плача,
Вся Канатчикова Дача к телевизору рвалась.
Вместо, чтоб поесть, помыться, уколоться и забыться,
Вся безумная больница у экрана собралась.

Говорил, ломая руки, краснобай и баламут
Про бессилие науки перед тайною Бермуд.
Все мозги разбил на части, все извилины заплел,
И канатчиковы власти колят нам второй укол.

Уважаемый редактор! Может лучше про реактор,
Про любимый лунный трактор? Ведь нельзя же, год подряд
То тарелками пугают, дескать, подлые, летают,
То у вас собаки лают, то руины говорят.

Мы кое в чем поднаторели – мы тарелки бьем весь год,
Мы на них уже собаку съели, если повар нам не врет.
А медикаментов груды – мы в унитаз, кто не дурак,
Вот это жизнь! И вдруг Бермуды. Вот те раз, нельзя же так!

Мы не сделали скандала – нам вождя недоставало.
Настоящих буйных мало – вот и нету вожаков.
Но на происки и бредни сети есть у нас и бредни,
И не испортят нам обедни злые происки врагов!

Это их худые черти бермутят воду во пруду,
Это все придумал Черчилль в восемнадцатом году.
Мы про взрывы, про пожары сочиняли ноту ТАСС,
Тут примчались санитары и зафиксировали нас.

Тех, кто был особо боек, прикрутили к спинкам коек,
Бился в пене параноик, как ведьмак на шабаше:
“Развяжите полотенцы, иноверы, изуверцы,
Нам бермуторно на сердце и бермутно на душе!”

Сорок душ посменно воют, раскалились добела.
Вот как сильно беспокоят треугольные дела!
Все почти с ума свихнулись, даже кто безумен был,
И тогда главврач Маргулис телевизор запретил.

Вон он, змей, в окне маячит, за спиною штепсель прячет.
Подал знак кому-то, значит, фельдшер, вырви провода.
И нам осталось уколоться и упасть на дно колодца,
И там пропасть на дне колодца, как в Бермудах, навсегда.

Ну а завтра спросят дети, навещая нас с утра:
“Папы, что сказали эти кандидаты в доктора?”
Мы ответим нашим чадам правду, им не все равно:
Удивительное рядом, но оно запрещено!

А вон дантист-надомник Рудик, у него приемник “Грюндиг”,
Он его ночами крутит, ловит, контра, ФРГ.
Он там был купцом по шмуткам и подвинулся рассудком,
А к нам попал в волненьи жутком,
С растревоженным желудком и с номерочком на ноге.

Он прибежал, взволнован крайне, и сообщеньем нас потряс,
Будто наш научный лайнер в треугольнике погряз.
Сгинул, топливо истратив, весь распался на куски,
Но двух безумных наших братьев подобрали рыбаки.

Те, кто выжил в катаклизме, пребывают в пессимизме.
Их вчера в стеклянной призме к нам в больницу привезли.
И один из них, механик, рассказал, сбежав от нянек,
Что Бермудский многогранник – незакрытый пуп Земли.

“Что там было, как ты спасся?”- Каждый лез и приставал.
Но механик только трясся и чинарики стрелял.
Он то плакал, то смеялся, то щетинился, как еж.
Он над нами издевался. Ну сумасшедший, что возьмешь!

Взвился бывший алкоголик, матерщинник и крамольник,
Говорит: “Надо выпить треугольник. На троих его, даешь!”
Разошелся, так и сыплет: “Треугольник будет выпит.
Будь он параллелепипед, будь он круг, едрена вошь!”

Больно бьют по нашим душам голоса за тыщи миль,
Мы зря Америку не глушим, ой, зря не давим Израиль,
Всей своей враждебной сутью подрывают и вредят,
Кормят, поят нас бермутью про таинственный квадрат.

Лектора из передачи, те, кто так или иначе
Говорят про неудачи и нервируют народ,
Нас берите, обреченных, треугольник вас, ученых,
Превратит в умалишенных, ну а нас – наоборот.

Пусть безумная идея, не решайте сгоряча!
Отвечайте нам скорее через доку-главврача.
С уваженьем. Дата, подпись… Отвечайте нам, а то,
Если вы не отзоветесь мы напишем в “Спортлотто”.

Владимир Высоцкий.
Текст песни “Бермудский треугольник”.



Ученик

(137),
закрыт



15 лет назад

Gennady

Гений

(59299)


15 лет назад

Хм.. . Начнем с того, что по формуле Герона вычисляется площадь _любого_ треугольника, так что информация о прямоугольности лишняя. Далее. В условии ошибка. То, что подается под видом формулы Герона есть просто полупериметр. А формула Герона имеет следующий вид: S=Sqrt(p*(p-a)*(p-b)*(p-c)), Sqrt – квадратный корень, р – полупериметр, а, b,с – стороны треугольника.

Теперь программка. Думаю, несколько комментариев скажут больше о решении, чем много слов. 🙂
program S;
var
a,b,c,p,S : Real; {объявляем переменные}
begin
Write(‘Введите стороны треугольника, разделенные пробелом: ‘); {курсор останется в этой же строке}
ReadLn(a,b,c); {ввод исходных данных (курсор перейдет на следующую строку) }
p := (a+b+c)/2; {нашли полупериметр}
S := Sqrt(p*(p-a)*(p-b)*(p-c)); {вычислили площадь}
WriteLn(‘Площадь треугольника равна: ‘, S); {вывод результата}
ReadLn; {чтобы увидеть результат, если запускать будем из ТР}
end.

Как справедливо заметил KN KN, для каждого расчета эту программу нужно будет запускать по-новой. Ну что ж, ее несложно и зациклить. Для этого все, находящееся между begin и end надо поместить в цикл while do или repeat until (да-да, эти циклы так называются) и при каждом расчете проверять условие выхода из цикла. Естественно, в список переменных потребуется добавить упрвляющую переменную цикла. Разница в этих циклах в том, что цикл while do может ни разу не выполниться в зависимости от условия, а repeat until выполняется по-крайней мере один раз.

Удачи! 🙂

KN

Гуру

(4070)


15 лет назад

ну, смотрю, никто не отвечает. попробую черкануть.
Берёшь так, пэ – это у тебя константа, так ты её и объяви константой в разделе объявления констант.
Далее, тебе нужно получить стороны треугольника. здесь уже варианты, ты можешь выбрать удобный.
1й. Смотри, ты можешь за одно выполнение программы вычислить только одну площадь, тогда объявляй вещественными (точность – как хочешь, сингл, дабл, экстендед) тоько три переменные – а, бэ и цэ. тогда можно результат вычисления площади записать в одну из этих переменных – так ты даже и съекономишь, в стародавние времена были такие приёмчики. для начала прочти эти переменные через read или readln (как тебе больше нравится) , присвой значение результата порлусуммыодной из переменных и выводи write или writeln. ну вот и всё, программа завершена.
2й – мы предусматриваем за одно выполнение программы вычислить сколь угодное количество площадей для кучи треугольников. Ну чтоб юзер не запускал прогу каждый раз. Это удобней, согласись? тогда ты объяви ещё одну переменную в разделе var, скажем, q, типа char и всю последовательность действий, начиная с ввода цифирек с клавы и заканчивая выводом результата можно оформить в цикл while until но, в конец после вывода результата надо вывести ещё и вопрос “продолжить? (y)” или “для завершения нажать z ” и прочитать эту переменную q. на выходе цикла условие until должно удовлетворить условию “не равно y” или равно z. если условие верно, выходим из проги, если нет – тогда продолжаем считать площади треугольников.
Надеюсь, хоть что-то понятно.
Удачи.

Добавить комментарий