Форум по 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.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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