Задача на вычисление площади геометрической фигуры с проверк

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
kazmund
незнакомец
Сообщения: 5
Зарегистрирован: 19.10.2011 20:28:05

Задача на вычисление площади геометрической фигуры с проверк

Сообщение kazmund »

Проверить условие суще-ствования треугольника и вы-числить его площадь по формуле Герона:
uses crt;
var a,b,c,p,s:real;
ch:char;
begin clrscr;
write('Задайте сторону а: ');readln(a);
write('Задайте сторону b: ');readln(b);
write('Задайте сторону c: ');readln(c);
p:=(a+b+c)/2;
if (p<=a) or (p<=b) or (p<=c) then
write('Треугольник с такими сторонами не существует')
else
begin
p:=p*(p-a)*(p-b)*(p-c);s:=sqrt(p);writeln;
writeln('Площадь треугольника - ',s:0:3);
end;
ch:=readkey;
end.

Помогите преобразовать программу в Лазарус , я нашел её вид в паскале , необходимо перевести в лазарус
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

Например так?

Код: Выделить всё

program Heron;

{$mode objfpc}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  { you can add units after this }FileUtil;

var a,b,c,p,s:Double;

begin
   writeln(UTF8ToConsole('Задайте сторону а: '));
   readln(a);
   writeln(UTF8ToConsole('Задайте сторону b: '));
   readln(b);
   writeln(UTF8ToConsole('Задайте сторону c: '));
   readln(c);
   p:=(a+b+c)/2;
   if (p<=a) or (p<=b) or (p<=c) then
     writeln(UTF8ToConsole('Треугольник с такими сторонами не существует'))
   else
     begin
       p:=p*(p-a)*(p-b)*(p-c);s:=sqrt(p);
       writeln;
       writeln(UTF8ToConsole('Площадь треугольника - '),s:0:3);
     end;
   readln;
end. 

Нужно ещё добавить LCL в зависимости проекта.
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

kazmund писал(а):p:=(a+b+c)/2;
if (p<=a) or (p<=b) or (p<=c) then
write('Треугольник с такими сторонами не существует')


А причем тут полупериметр?

Э :( , а класс-то какой? Приходская школа, или экономический-юридический-болтологический....класс ?
Вроде как партия :!: и правительство :!: , а также все СОЗНАТЕЛЬНЫЕ граждане верят ,тьфу, ЗНАЮТ - что главная ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
и

Код: Выделить всё

if (p<=a) or (p<=b) or (p<=c) then

одно и тоже, такчто всё верно
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

zub писал(а):>>ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
и

Код: Выделить всё

if (p<=a) or (p<=b) or (p<=c) then

одно и тоже, такчто всё верно

Ну, как учитель, ищем блох в коде :shock:
В поставленной задаче пионЭра было (вроде) условие проверки существования тр-ка

а при вводе (к примеру) а = -11111111111 и кирдык... :)


Предлагаю переместить топик в Помощь за .... (....)
Ask
постоялец
Сообщения: 163
Зарегистрирован: 25.12.2008 02:51:37

Сообщение Ask »

Little_Roo писал(а):
zub писал(а):>>ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
и

Код: Выделить всё

if (p<=a) or (p<=b) or (p<=c) then

одно и тоже, такчто всё верно

Ну, как учитель, ищем блох в коде :shock:


Учителя, руководствующиеся принципом "так было написано в учебнике, поэтому все другие способы неверны" --
это одна из главных проблем современного обучения программированию.
(И, наверное, другим предметам, но в программировании встречаются особенно вопиющие примеры).

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

Little_Roo писал(а): а при вводе (к примеру) а = -11111111111 и кирдык... :)

В каком смысле "кирдык"?
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

Ask писал(а):Код имеет стилистические недостатки, и вообще, за списывание таких элементарных вещей надо сразу
выгонять из учебного заведения, но с условием как раз всё в порядке.


Это уже флуд :cry:

Но -
НЕзнание основ школьной геометрии ...
ОДЗ (область допустимых значений) никто не отменял - и кирдык - длина стороны отрицательная (или нулевая), я уж не говорю, что она может быть и символьной.
Так что условие проверки существования надо пересмотреть - учебник геометрии 7-й класс (могу несколько ошибиться :( )
Аватара пользователя
Protopopulus
новенький
Сообщения: 24
Зарегистрирован: 25.11.2010 08:58:07

Сообщение Protopopulus »

Код: Выделить всё

if ((a < b + c) and (b < a + c) and (c < a + b) and (a <> 0) and (b <> 0) and (c <> 0))
then
  считаем площадь
  выводим ответ
else
  треугольник невозможен

Не?
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

Protopopulus писал(а):(a <> 0) and (b <> 0) and (c <> 0))

Может, хватит ЭТО ворошить?? :oops:

Код: Выделить всё

...(a>0) and (b>0) and (c>0)...

И...Не дело здесь открывать коррекционный класс ...

To: Модератор - убейте тему :shock:
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>И...Не дело здесь открывать коррекционный класс ...
Автор правильно подглядел пример реализации, если по каждому поводу отправлять за учебники - из пионеров никогда комсомольцы не вырастут)). Вполне рабочий вариант. Начнет вводить нули, отрицательные числа или символьную билеберду - подумает\спросит и доработает при желании. Хотя думаю после первого ответа - зачет здан и фиг с ним))

>>за списывание таких элементарных вещей надо сразу выгонять из учебного заведения
Всё давно написано до нас, так что в "списывании" ниче страшного нет. Главное чтоб понимание было
Ответить