IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> вычисление площади прямоугольника, по координатам вершин
Yulianna
сообщение 24.02.2007 17:29
Сообщение #1


Гость






Задача.
на плоскости задано n прямоугольников координатами своих вершин. Найти прямоугольник с минимальной площадью. Решить задачу с помощью подпрограммы процедуры определения площади прямоугольника по координатам его вершин.

Помогите плиз как можно скорее...никак не могу додуматься как правильно сделать:(

Сообщение отредактировано: мисс_граффити - 25.02.2007 0:22
 К началу страницы 
+ Ответить 
klem4
сообщение 24.02.2007 17:46
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
не могу додуматься как правильно сделать


Что конкретно ? Не знаешь как по координатам вершин прямоуголника найти его площадь ? Или что ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yulianna
сообщение 24.02.2007 23:43
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


Цитата(klem4 @ 24.02.2007 18:46) *

Что конкретно ? Не знаешь как по координатам вершин прямоуголника найти его площадь ? Или что ?


Да. Если нахожу площадь как сумму площадей 2-х треугольников, то где-то допускаю наверное ошибку... потому что площадь просто обнуляется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 24.02.2007 23:49
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


1.
 ! 
Заголовок темы должен быть информативным


переименовывай, иначе тема будет закрыта
2.
Цитата
где-то допускаю наверное ошибку...

ну наверное, если не работает...
может, покажешь, что ты делаешь? тогда вероятность обнаружения ошибки несколько возрастет.
3.
Цитата
Если нахожу площадь как сумму площадей 2-х треугольников

blink.gif зачем такие сложности???


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yulianna
сообщение 25.02.2007 0:04
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


1. Не могу че-та переименовать тему:((
Вот что я сделала

program Prymougolniki;
uses crt;
type mas=array[1..100] of real;
var i,n:integer;
x1,y1,x2,y2,x3,y3,x4,y4,S: mas;
a,b,d,p,S1:real;
smin:real;

Procedure Plosha(x1,y1,x2,y2,x3,y3,x4,y4,S,a,b,d,p:real);
var i,n:integer;
begin
a:=sqrt(sqr(x1-x2)+sqr(y1-y2));
b:=sqrt(sqr(x2-x3)+sqr(y2-y3));
d:=sqrt(sqr(x2-x4)+sqr(y2-y4));
p:=(a+b+d)/2;
S1:=sqrt(p*(p-a)*(p-b)*(p-d));
S:=2*S1;
end;

begin
clrscr;
writeln('Vvedite kol-vo pr-kov');
readln(n);
Writeln('Vvedite koordinati pr-kov');
for i:=1 to n do
begin
writeln('x1[',i,']=',' y1[',i,']='); readln(x1[i],y1[i]);
writeln('x2[',i,']=',' y2[',i,']='); readln(x2[i],y2[i]);
writeln('x3[',i,']=',' y3[',i,']='); readln(x3[i],y3[i]);
writeln('x4[',i,']=',' y4[',i,']='); readln(x4[i],y4[i]);
end;
Plosha(x1[i],y1[i],x2[i],y2[i],x3[i],y3[i],x4[i],y4[i],a,b,d,p,n);
Smin:=S[1];
for i:=1 to n do
if S[i]<Smin then
begin
Smin:=S[i];
end;
writeln('smin',Smin);
readln;
end.


Сообщение отредактировано: Yulianna - 25.02.2007 0:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 25.02.2007 0:21
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


из-за чего 0:
Procedure Plosha(x1,y1,x2,y2,x3,y3,x4,y4,S,a,b,d,p:real);

надо так:
Procedure Plosha(x1,y1,x2,y2,x3,y3,x4,y4,a,b,d,p:real; var S: real);


.... открою тебе страшную тайну: площадь прямоугольника равна произведению длин сторон. совсем незачем извращаться с формулой Герона и вообще треугольниками.
кроме того, нам совсем незачем (при данной формулировке задачи) хранить все площади. можно вычислять и сразу же сравнивать с минимальной.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yulianna
сообщение 25.02.2007 0:43
Сообщение #7





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


Цитата
нам совсем незачем (при данной формулировке задачи) хранить все площади. можно вычислять и сразу же сравнивать с минимальной.

Я не совсем поняла как это реализовать... не нужно площадь делать массивом?

Сообщение отредактировано: Yulianna - 25.02.2007 0:45
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yulianna
сообщение 25.02.2007 1:06
Сообщение #8





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


Я всё поняла! Спасибо большое!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.02.2007 9:36
Сообщение #9


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Для вычисления площади вполне достаточно 2-х точек, например - левой_верхней и правой_нижней

x1,y1,x2,y2,x3,y3,x4,y4,a,b,d,p:real; var S: real
как-то некомпактно выглядит smile.gif

Я юы делал как-то так :

type
TPoint = record
x, y: Word;
end;

TRect = record
TL, BR: TPoint; // TopLeft, BottomRight
end;

function Area(const R: TRect): Word;
begin
with R do Area := (BR.x - TL.x) * (TL.y - BR.y);
end;

function FindMin(const R: Array of TRect): Integer;
var
n, i, min, T: Integer;
begin
n := SizeOf® div SizeOf(TRect);
if n > 0 then begin
min := Area(R[0]);
for i := 1 to n - 1 do begin
T := Area(R[i]);
if T < min then min := T;
end;
end else min := 0;
FindMin := min;
end;

const
R: array [1..4] of TRect = (
(TL:(x:1; y:10); BR:(x:10; y:1)), // (1, 10); (10, 1)
(TL:(x:1; y: 4); BR:(x:4; y:1)), // (1, 4); (4, 1)
(TL:(x:3; y: 8); BR:(x:12; y:2)), // (3, 8); (12, 2)
(TL:(x:0; y: 1); BR:(x:1; y:0)) // (0, 1); (1, 0)
);

begin
writeln(FindMin®);
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 25.02.2007 13:01
Сообщение #10


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


klem4, а если стороны прямоугольника не параллельны осям? (про это ведь в условии ничего не сказано)


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.02.2007 13:08
Сообщение #11


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


В таком случае 2-х точек маловато, хотя ... надо подумать.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 25.02.2007 13:19
Сообщение #12


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


маловато... они не определяют прямоугольник однозначно.
надо 3.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"