ВС
Владимир Столяров

почему не работает разветвление в делфи?

задание: нужно сделать программу, при помощи которой можно составить план дома. рисуем на канве, есть координаты FBeginPoint.X, FBeginPoint.Y, FEndPoint.X, FEndPoint.Y, то есть начальные координаты постороенного объекта и конечные его координаты. нужно выводить площадь построенного предмета и общую площадь. проблема возникает при строении прямоугольника - там нужно, чтобы когда один прямоугольник находится внутри другого, его площадь не добавлялась к общей, а если нет - соответственно, добавлялась. делаю так: координаты всех построенных объектов запоминаю в двумерный массив, в котором в первой строке сохраняются координата начала фигуры Х, а во втором - У, во втором массиве так же храню для координат конца.
begin
//выводим информацию про объект
o:=Round(Abs(FEndPoint.X-FBeginPoint.X)/20);
b:=Round(Abs(FEndPoint.Y-FBeginPoint.Y)/20);
if (o*b)<1000 then
Memo1.Text:=Memo1.Text+#13#10+'добавлен объект, его ширина '+IntToStr(o)+' см, длина '+IntToStr(b)+' см, площадь '+IntToStr(o*b)+' см^2'
else Memo1.Text:=Memo1.Text+#13#10+'добавлен объект, его ширина '+IntToStr(o)+' см, длина '+IntToStr(b)+' см, площадь '+IntToStr(Round((o*b)/100))+' м^2';
//увеличиваем счетчик, чтобы в дальнейшем понимать, первый это объект или не первый
inc(i);
rectangle2:=Rect(FBeginPoint.X,FBeginPoint.Y,FEndPoint.X,FEndPoint.Y);
if i>1 then //если не первый
begin //пробегаем по массивам уже запомненных координат
for j:=1 to Length(mas) do
begin
rectangle1:=Rect(mas[j,1],mas[j,2],mas2[j,1],mas2[j,2]);
//если введенный прямоугольник пересекается с одним из тех, что были построенны ранее, тогда его площадь не следует добавлять к общей, а если не совпадает, то добавляем
if IntersectRect(OutRect,rectangle1,rectangle2)=False then
begin
ShowMessage(IntToStr(o*b));
plo:=plo+o*b;
Break;
end;
rectangle1:=Rect(0,0,0,0);
end;
end
else plo:=o*b;
//запоминаем в массив координаты прямоугольника
mas[i,1]:=FBeginPoint.X; mas[i,2]:=FBeginPoint.Y;
mas2[i,1]:=FEndPoint.X; mas2[i,2]:=FEndPoint.Y;
Memo1.Text:=Memo1.Text+#13#10+'общая площадь = '+IntToStr(Round(plo))+' см^2'
end
разветвление не работает так как площадь считается независимо от того, принадлежит этот прямоугольник уже построенному или нет! хотя массив заполняется и заполняется правильно, выводил, проверял.
в чем может быть проблема?

Президент интернета, вот спасибо! исправить то ее как?

ВК
Ваня Канин

У тебя, видимо, алгоритмическая ошибка

Похожие вопросы
Программирование Делфи
Почему Делфи не перехватывает ошибку?
Как считать в делфи?
почему не компилируется проект в делфи?
Pascal ABC (разветвление)
помогите в делфи !!!:??
Делфи чудит или как?
как компилировать в делфи если...
почему делфи так коряво выводит число:
Разветвленные алгоритмы. Паскаль