Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2013, 00:32
Maiomi Maiomi вне форума
Прохожий
 
Регистрация: 09.12.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
Вопрос Площать и периметр треугольника

Введите три положительных числа, вычислите периметр или площадь треугольника с такими сторонами (в зависимости от выбранного переключателя). Добавить защиту от некорректных чисел.

что использовать для переключателя радиобатон или чекбокс?
как прописать переключатель?
защита от некоректных всмысле чтоб отрицательные не вводили числа?

Помогите плз)
Ответить с цитированием
  #2  
Старый 10.12.2013, 00:51
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Maiomi
Введите три положительных числа, вычислите периметр или площадь треугольника с такими сторонами (в зависимости от выбранного переключателя). Добавить защиту от некорректных чисел.

что использовать для переключателя радиобатон или чекбокс?
Раз будет на выбор одно из двух, то очевидно что нужно использовать 2 RadioButton или же 1 RadioGroup с двумя элементами
Цитата:
Сообщение от Maiomi
как прописать переключатель?
При использовании двух RadioButton примерно так:
Код:
  if RadioButton1.Checked then
  begin
    // Вычисляем периметр треугольника
  end else
  if RadioButton2.Checked then
  begin
    // Вычисляем площадь треугольника
  end;
При использовании RadioGroup примерно так:
Код:
  case RadioGroup1.ItemIndex of
    0: ; // Вычисляем периметр треугольника
    1: ; // Вычисляем площадь треугольника
  end;
Цитата:
Сообщение от Maiomi
защита от некоректных всмысле чтоб отрицательные не вводили числа?
Ну очевидно что стороны треугольника не могут иметь отрицательные размеры. Но видимо ещё нужно проверять чтобы числа также были корректными, ведь вместо чисел можно ввести и буквы.
Ответить с цитированием
  #3  
Старый 10.12.2013, 00:53
Maiomi Maiomi вне форума
Прохожий
 
Регистрация: 09.12.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

а еще если не получается трегольник.. всмысле что если ввести стороны 1 1 и 20 то треугольник не получится)

а еще если не получается трегольник.. всмысле что если ввести стороны 1 1 и 20 то треугольник не получится)

забыла как считывать в переменную с эдита.. ониж в разных категориях.. всмысле текст и число..

floatToStr Не пашет(

Последний раз редактировалось M.A.D.M.A.N., 10.12.2013 в 07:30.
Ответить с цитированием
  #4  
Старый 10.12.2013, 01:08
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Maiomi
а еще если не получается трегольник.. всмысле что если ввести стороны 1 1 и 20 то треугольник не получится)
Ну и это тоже можно. Впрочем если вычислять площадь треугольника по формуле Герона, то для таких (невозможных) треугольников под корнем получится отрицательное число и попытка вычислить от отрицательного числа квадратный корень выдаст ошибку, что конечно же можно использовать для проверки невозможности треугольника.
Цитата:
Сообщение от Maiomi
забыла как считывать в переменную с эдита.. ониж в разных категориях.. всмысле текст и число..
Цитата:
Сообщение от Maiomi
floatToStr Не пашет(
Нужно наоборот - StrToFloat - так как преобразуется строка в число.
Ответить с цитированием
  #5  
Старый 10.12.2013, 01:11
Maiomi Maiomi вне форума
Прохожий
 
Регистрация: 09.12.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,s,p:real;
begin
a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
c:= StrToFloat(Edit3.Text);
if RadioButton1.Checked then
begin
p:=a+b+c;
Label1:=FloatToStr(p);
end else
if RadioButton2.Checked then
begin
s:=1/2*(a*b*c)
Label1:=s;
end;
end;

меня для Label1 интересует.. как тут вывести..

Последний раз редактировалось Admin, 10.12.2013 в 21:39.
Ответить с цитированием
  #6  
Старый 10.12.2013, 01:14
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Maiomi
....
s:=1/2*(a*b*c)
Label1:=s;
end;
end;

меня для Label1 интересует.. как тут вывести..
Через свойство Caption:
Код:
Label1.Caption := FloatToStr(s);
Ответить с цитированием
  #7  
Старый 10.12.2013, 02:41
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

После каких проверок?
Здесь что ли?
Код:
if (a<0) or (b<0) or (c<0) then
begin
  Label1.Caption:=' Îäíà èç ñòîðîí îòðèöàòåëüíà!!!';
  Exit;
end;
if (a+b<c) or (b+c<a) or (a+c<b) then
begin
  Label1.Caption:='Íåëüçÿ ïîñòðîèòü òðåóãîëüíèê!!!!';
  Exit;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 10.12.2013 в 02:45.
Ответить с цитированием
  #8  
Старый 10.12.2013, 02:56
Maiomi Maiomi вне форума
Прохожий
 
Регистрация: 09.12.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
Радость

спс вашему сайту!!!! вы лучшие!!!!!
заработало)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,s,p,pp:real;
begin
a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
c:= StrToFloat(Edit3.Text);
if (a<0) or (b<0) or (c<0) then
Begin
Label1.Caption:=' Одна из сторон отрицательна!!!';
Exit;
end;
if (a+b<c) or (b+c<a) or (a+c<b) then
begin
Label1.Caption:='Нельзя построить треугольник!!!!';
Exit;
end;
if RadioButton1.Checked then
begin
p:=a+b+c;
Label1.Caption:='Периметр равен = ' + FloatToStr(p);
end else
if RadioButton2.Checked then
begin
pp:=(a+b+c)/2;
s:=sqrt(abs(pp*(pp-a)*(pp-b)*(pp-c)));
Label1.Caption:='Площадь равна = ' + FloatToStr(s);
end;
Админ: Пользуемся тегами для оформления кода!

хочу для S(площади) прописать ограничение типа S:2:2.. но прога ругается.. что делать??

Последний раз редактировалось Admin, 10.12.2013 в 21:39.
Ответить с цитированием
  #9  
Старый 10.12.2013, 11:53
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Maiomi
хочу для S(площади) прописать ограничение типа S:2:2.. но прога ругается.. что делать??
Это что за ограничение такое? Если нужно отформатировать число при выводе, то так можно делать только в стандартных процедурах Write/Writeln/Str.
Пример:
Код:
var
.....
  s: Real;
  ss: String;
begin
.....
  Str(s:2:2, ss);
  Label1.Caption := 'Площадь равна = ' + ss;
Но лучше использовать обычные функции форматирования Format, FloatToStrF.
Пример:
Код:
Label1.Caption := 'Площадь равна = ' + FloatToStrF(s, ffFixed, 10, 2);
Ответить с цитированием
  #10  
Старый 10.12.2013, 14:38
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Возможно оффтоп, но суть задачи немного иная: В зависимости от переключателя, три числа будут:
1. Сторона A, сторона B, сторона C, найти площадь.
2. Сторона A, сторона B, площадь, найти периметр.
Просто находить периметр с известными 3 сторонами - еще ничего, но вручную подбирать стороны, чтобы получился треугольник - уже что-то.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter