|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
подскажите, что не так
Даны координаты вершин двух треугольников. Определить, какой из них имеет большую площадь
Код:
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
|
||||
|
||||
Эка в какой раздел вас занесло. Потрудитесь создать тему в соответствующем разделе, здесь выкладывают готовые программы.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
Тема перенесена в раздел "Начинающим".
А где, собственно, вопрос? |
#4
|
|||
|
|||
>А где, собственно, вопрос?
Ну вопрос был в самом начале - что не так? Во первых разберитесь - где у Вас начинаются и кончаются функции. Например 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; и второй цикл для второго треугольника |