|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Площать и периметр треугольника
Введите три положительных числа, вычислите периметр или площадь треугольника с такими сторонами (в зависимости от выбранного переключателя). Добавить защиту от некорректных чисел.
что использовать для переключателя радиобатон или чекбокс? как прописать переключатель? защита от некоректных всмысле чтоб отрицательные не вводили числа? Помогите плз) |
#2
|
||||
|
||||
Цитата:
Цитата:
Код:
if RadioButton1.Checked then begin // Вычисляем периметр треугольника end else if RadioButton2.Checked then begin // Вычисляем площадь треугольника end; Код:
case RadioGroup1.ItemIndex of 0: ; // Вычисляем периметр треугольника 1: ; // Вычисляем площадь треугольника end; Цитата:
|
#3
|
|||
|
|||
а еще если не получается трегольник.. всмысле что если ввести стороны 1 1 и 20 то треугольник не получится)
а еще если не получается трегольник.. всмысле что если ввести стороны 1 1 и 20 то треугольник не получится) забыла как считывать в переменную с эдита.. ониж в разных категориях.. всмысле текст и число.. floatToStr Не пашет( Последний раз редактировалось M.A.D.M.A.N., 10.12.2013 в 07:30. |
#4
|
||||
|
||||
Цитата:
Цитата:
Цитата:
|
#5
|
|||
|
|||
Код:
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
|
||||
|
||||
Цитата:
Код:
Label1.Caption := FloatToStr(s); |
#7
|
||||
|
||||
После каких проверок?
Здесь что ли? Код:
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
|
|||
|
|||
спс вашему сайту!!!! вы лучшие!!!!!
заработало) Код:
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
|
||||
|
||||
Цитата:
Пример: Код:
var ..... s: Real; ss: String; begin ..... Str(s:2:2, ss); Label1.Caption := 'Площадь равна = ' + ss; Пример: Код:
Label1.Caption := 'Площадь равна = ' + FloatToStrF(s, ffFixed, 10, 2); |
#10
|
||||
|
||||
Возможно оффтоп, но суть задачи немного иная: В зависимости от переключателя, три числа будут:
1. Сторона A, сторона B, сторона C, найти площадь. 2. Сторона A, сторона B, площадь, найти периметр. Просто находить периметр с известными 3 сторонами - еще ничего, но вручную подбирать стороны, чтобы получился треугольник - уже что-то. |