Задача на вычисление площади геометрической фигуры с проверк
Модератор: Модераторы
Задача на вычисление площади геометрической фигуры с проверк
Проверить условие суще-ствования треугольника и вы-числить его площадь по формуле Герона:
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.
Помогите преобразовать программу в Лазарус , я нашел её вид в паскале , необходимо перевести в лазарус
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.
Помогите преобразовать программу в Лазарус , я нашел её вид в паскале , необходимо перевести в лазарус
Например так?
Нужно ещё добавить LCL в зависимости проекта.
Код: Выделить всё
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
- Откуда: Санкт-Петербург
kazmund писал(а):p:=(a+b+c)/2;
if (p<=a) or (p<=b) or (p<=c) then
write('Треугольник с такими сторонами не существует')
А причем тут полупериметр?
Э
Вроде как партия
>>ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
и
одно и тоже, такчто всё верно
и
Код: Выделить всё
if (p<=a) or (p<=b) or (p<=c) thenодно и тоже, такчто всё верно
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
zub писал(а):>>ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
иКод: Выделить всё
if (p<=a) or (p<=b) or (p<=c) then
одно и тоже, такчто всё верно
Ну, как учитель, ищем блох в коде
В поставленной задаче пионЭра было (вроде) условие проверки существования тр-ка
а при вводе (к примеру) а = -11111111111 и кирдык...
Предлагаю переместить топик в Помощь за .... (....)
Little_Roo писал(а):zub писал(а):>>ОДЗ для существования произвольного треугольника - это ПРЕВЫШЕНИЕ СУММЫ ДЛИН ДВУХ ЛЮБЫХ СТОРОН ТРЕУГОЛЬНИКА ДЛИНЕ ЕГО ТРЕТЬЕЙ СТОРОНЫ
иКод: Выделить всё
if (p<=a) or (p<=b) or (p<=c) then
одно и тоже, такчто всё верно
Ну, как учитель, ищем блох в коде![]()
Учителя, руководствующиеся принципом "так было написано в учебнике, поэтому все другие способы неверны" --
это одна из главных проблем современного обучения программированию.
(И, наверное, другим предметам, но в программировании встречаются особенно вопиющие примеры).
Проверка правильная, и даже немного более эффективная по сравнению с подходом "в лоб".
Код имеет стилистические недостатки, и вообще, за списывание таких элементарных вещей надо сразу
выгонять из учебного заведения, но с условием как раз всё в порядке.
Little_Roo писал(а): а при вводе (к примеру) а = -11111111111 и кирдык...![]()
В каком смысле "кирдык"?
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
Ask писал(а):Код имеет стилистические недостатки, и вообще, за списывание таких элементарных вещей надо сразу
выгонять из учебного заведения, но с условием как раз всё в порядке.
Это уже флуд
Но -
НЕзнание основ школьной геометрии ...
ОДЗ (область допустимых значений) никто не отменял - и кирдык - длина стороны отрицательная (или нулевая), я уж не говорю, что она может быть и символьной.
Так что условие проверки существования надо пересмотреть - учебник геометрии 7-й класс (могу несколько ошибиться
- Protopopulus
- новенький
- Сообщения: 24
- Зарегистрирован: 25.11.2010 08:58:07
Код: Выделить всё
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
- Откуда: Санкт-Петербург
Protopopulus писал(а):(a <> 0) and (b <> 0) and (c <> 0))
Может, хватит ЭТО ворошить??
Код: Выделить всё
...(a>0) and (b>0) and (c>0)...И...Не дело здесь открывать коррекционный класс ...
To: Модератор - убейте тему
>>И...Не дело здесь открывать коррекционный класс ...
Автор правильно подглядел пример реализации, если по каждому поводу отправлять за учебники - из пионеров никогда комсомольцы не вырастут)). Вполне рабочий вариант. Начнет вводить нули, отрицательные числа или символьную билеберду - подумает\спросит и доработает при желании. Хотя думаю после первого ответа - зачет здан и фиг с ним))
>>за списывание таких элементарных вещей надо сразу выгонять из учебного заведения
Всё давно написано до нас, так что в "списывании" ниче страшного нет. Главное чтоб понимание было
Автор правильно подглядел пример реализации, если по каждому поводу отправлять за учебники - из пионеров никогда комсомольцы не вырастут)). Вполне рабочий вариант. Начнет вводить нули, отрицательные числа или символьную билеберду - подумает\спросит и доработает при желании. Хотя думаю после первого ответа - зачет здан и фиг с ним))
>>за списывание таких элементарных вещей надо сразу выгонять из учебного заведения
Всё давно написано до нас, так что в "списывании" ниче страшного нет. Главное чтоб понимание было
