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

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

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

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


Гость






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

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

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


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

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

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


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


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


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





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

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


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

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


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


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

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

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


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


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

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

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


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





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

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


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

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

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





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

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


Я всё поняла! Спасибо большое!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


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


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


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

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

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


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


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


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

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

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


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


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

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

 





- Текстовая версия 19.03.2024 9:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name