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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.05.2013, 23:42
вірляна вірляна вне форума
Прохожий
 
Регистрация: 20.05.2013
Сообщения: 1
Версия Delphi: 7
Репутация: 10
По умолчанию подскажите, что не так

Даны координаты вершин двух треугольников. Определить, какой из них имеет большую площадь

Код:
procedure TForm1.Button1Click(Sender: TObject);
Var x11,y11,x12,y12,x13,y13:real; 
x21,y21,x22,y22,x23,y23:real; 
S1,S2:real; 
Flag:Boolean;
Function Len (a,b,c,d:real):real; 
Begin
Len:=sqrt(sqr(a-b)+sqr(c-d)); 
End; 
Function Input(var x1,y1,x2,y2,x3,y3:real):boolean; 
Var a,b,c:real; 
Begin
a:=Len(x1,y1,x2,y2); 
b:=Len(x1,y1,x3,y3); 
c:=Len(x3,y3,x2,y2); 
if (a>=b+c) or (c>=a+b) or (b>=a+c)then
label17.Caption:='Помилка! Повторіть введення:'
else
Begin
Function P(x,y,z:real):real;
Begin
P:=x+y+z;
End;

Function S(a,b,c:real):real;
 Var PP:real;
Begin
PP:=P(x,y,z)/2;
S:=sqrt(PP*(PP-a)*(PP-b)*(PP-c));
End;
End;
End;
begin
x11:=Strtofloat(edit1.Text);
x12:=Strtofloat(edit2.Text);
x13:=Strtofloat(edit3.Text);
y11:=Strtofloat(edit4.Text);
y12:=Strtofloat(edit5.Text);
y13:=Strtofloat(edit6.Text);
x21:=Strtofloat(edit7.Text);
x22:=Strtofloat(edit8.Text);
x23:=Strtofloat(edit9.Text);
y21:=Strtofloat(edit10.Text);
y22:=Strtofloat(edit11.Text);
y23:=Strtofloat(edit12.Text);

repeat
Flag:=Input(x11,y11,x12,y12,x13,y13); 
until Flag; 
repeat 
Flag:=Input(x21,y21,x22,y22,x23,y23); 
until Flag; 
S1:=S(x11,y11,x12,y12,x13,y13);
S2:=S(x21,y21,x22,y22,x23,y23);
Procedure Output(S1,S1:real); 
Begin  
if S1>S2 
then  
begin
Label17.caption:='Більшу площу має перший трикутник.';
Label18.Caption:='Його площа дорівнює -> '+floattostr(s1);
end 
else 
if S2>S1 
then 
begin 
Label17.caption:='Більшу площу має другий трикутник.';
Label18.Caption:='Його площа дорівнює -> '+floattostr(s2);
end 
else  
begin
Label17.caption:='Трикутники мають однакову площу.';
Label18.Caption:=' площа дорівнює -> '+floattostr(s1);
end; 
End;

lmikle: Пользуемся тегами для оформления кода.

Последний раз редактировалось lmikle, 21.05.2013 в 06:24.
Ответить с цитированием
  #2  
Старый 21.05.2013, 00:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Эка в какой раздел вас занесло. Потрудитесь создать тему в соответствующем разделе, здесь выкладывают готовые программы.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 21.05.2013, 06:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тема перенесена в раздел "Начинающим".

А где, собственно, вопрос?
Ответить с цитированием
  #4  
Старый 21.05.2013, 09:47
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

>А где, собственно, вопрос?

Ну вопрос был в самом начале - что не так?

Во первых разберитесь - где у Вас начинаются и кончаются функции. Например Input, Len, S. Например, вынести Len и S из тела Input и написать их перед Input.

Процедура Output тоже написана в неправильном месте.

Почитайте синтаксис на предмет - как описывать вложенные процедуры.(если именно это Вам нужно)

Во вторых - у Вас сначала считываются значения координат, а потом в цикле проверяется правильность. Хотя в данном случае проверка будет всегда проходить, но правильным должен быть такой порядок

Код:
Repeat
  x11:=Strtofloat(edit1.Text); 
  ...
  y13:=Strtofloat(edit6.Text); 
  Flag:=Input(x11,y11,x12,y12,x13,y13);  
until Flag;  

и второй цикл для второго треугольника
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter