Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Найти координаты точки пересечения прямых, содержащих боковые стороны трапеции 
V
    Опции темы
Snoooppy
Дата 5.10.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.5.2006

Репутация: нет
Всего: нет



Здравствуйте уважаемые програмисты.
Прошу вас, помогоите написать прогу, которая делает следующее: 
Если четыре точки A, B, C и D, заданные координатами на плоскости, могут быть вершинами трапеции, найти координаты точки пересечения прямых, содержащих боковые стороны трапеции. (язык прогр Pascal)программа должна быть написана через стеки.
народ, кто чем может, помогите пожалуйста.
PM MAIL   Вверх
Sartorius
Дата 5.10.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Цитата

программа должна быть написана через стеки.

 Поясни....
PM MAIL ICQ   Вверх
koljan
Дата 5.10.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



Цитата(Snoooppy @  5.10.2006,  18:10 Найти цитируемый пост)
найти координаты точки пересечения прямых

каких прямых
 smile 


--------------------
PM MAIL ICQ   Вверх
Albinos_x
Дата 5.10.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 2
Всего: 108



Цитата(Snoooppy @  5.10.2006,  18:10 Найти цитируемый пост)
 точки A, B, C и D

Цитата(Snoooppy @  5.10.2006,  18:10 Найти цитируемый пост)
плоскости

Цитата(Snoooppy @  5.10.2006,  18:10 Найти цитируемый пост)
 вершинами трапеции

Цитата(Snoooppy @  5.10.2006,  18:10 Найти цитируемый пост)
 найти координаты точки пересечения прямых

каких прямых? организующих трапецию из точек? если , да то A, B, C и D случаем не будут точками пересечения?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Sartorius
Дата 5.10.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 Насчет прямых - то все понятно.... Это пересечение не параллельных сторон трапеции , а вот при чем здесь стеки... smile 
PM MAIL ICQ   Вверх
koljan
Дата 5.10.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



Цитата(Sartorius @  5.10.2006,  22:19 Найти цитируемый пост)
Насчет прямых - то все понятно.... Это пересечение не параллельных сторон трапеции , а вот при чем здесь стеки...

вообще-то паралельные стороны не могут пересечся , а пересечение других это и есть точки A B C D


--------------------
PM MAIL ICQ   Вверх
Sartorius
Дата 5.10.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Блин .... попробую нарисовать...

         
Эту точку нада найти ---- /\
                                          /  \
                                         /    \
                                        /      \
                                   A  /____\    B
                                      /          \
                                 C  /______\  D

PM MAIL ICQ   Вверх
Albinos_x
Дата 6.10.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 2
Всего: 108



вот так будет на делфи
Код

Procedure LineCoff(x1,x2,y1,y2:Real; var A,B:Real);
var A1:Real;
begin
A1:=X1-X2;
A:=Y1-Y2;
A:=A/A1;
B:=Y1-X1*A;
end;

function PixDoub(A1,A2,B1,B2:Real; var X,Y:real):boolean;
begin
Result:=False;
try
X:=(B2-B1)/(A1-A2);
  except
     Result:=True;
     exit;
     end;
Y:=A1*X+B1;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var A1,A2,B1,B2,x,y:real;

begin
{X=SpinEdit1.Value;  //A
y:=SpinEdit2.Value;   //A
X:=SpinEdit3.Value;     //B
y:=SpinEdit4.Value;      //B
X:=SpinEdit5.Value;        //C
y:=SpinEdit6.Value;         //C
X:=SpinEdit7.Value;           //D
y:=SpinEdit8.Value;            //D }
Memo1.Clear ;
// для черытёх точек только 3 комбинации прямых
// AB & CD
// находим коэффициенты:
Memo1.Lines.Add('AB & CD');
LineCoff(SpinEdit1.Value,SpinEdit3.Value,SpinEdit2.Value,SpinEdit4.Value,A1,B1);
LineCoff(SpinEdit5.Value,SpinEdit7.Value,SpinEdit6.Value,SpinEdit8.Value,A2,B2);
// теперь точку пересечения
if PixDoub(A1,A2,B1,B2,X,Y) then
   Memo1.Lines.Add('линии паралельны')
   else
   Memo1.Lines.Add(('X = '+floattoStr(X)+'    Y ='+floattoStr(Y)));
// AС & BD
// находим коэффициенты:
Memo1.Lines.Add('AС & BD');
LineCoff(SpinEdit1.Value,SpinEdit5.Value,SpinEdit2.Value,SpinEdit6.Value,A1,B1);
LineCoff(SpinEdit3.Value,SpinEdit7.Value,SpinEdit4.Value,SpinEdit8.Value,A2,B2);
// теперь точку пересечения
if PixDoub(A1,A2,B1,B2,X,Y) then
   Memo1.Lines.Add('линии паралельны')
   else
   Memo1.Lines.Add(('X = '+floattoStr(X)+'    Y ='+floattoStr(Y)));
// AD & СB
// находим коэффициенты:
Memo1.Lines.Add('AD & СB');
LineCoff(SpinEdit1.Value,SpinEdit7.Value,SpinEdit2.Value,SpinEdit8.Value,A1,B1);
LineCoff(SpinEdit5.Value,SpinEdit3.Value,SpinEdit6.Value,SpinEdit4.Value,A2,B2);
// теперь точку пересечения
if PixDoub(A1,A2,B1,B2,X,Y) then
   Memo1.Lines.Add('линии паралельны')
   else
   Memo1.Lines.Add(('X = '+floattoStr(X)+'    Y ='+floattoStr(Y)));
end;


в паскаль думаю проблем перевести не составит... если всё таки не удастся, то подожди до вечера...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Sartorius
Дата 6.10.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Albinos_x,  стеки ему нужны какие-то... smile 
PM MAIL ICQ   Вверх
Albinos_x
Дата 6.10.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 2
Всего: 108



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


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snoooppy
Дата 6.10.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.5.2006

Репутация: нет
Всего: нет



Albinos_x, попытался перевести в паскаль, ни че не понял, мы тока начали его изучать по-этому туговато, не мог бы его перевести, я буду оч благодарен тебе.стекам отбой, препод ошибся номером лабы и отменил стеки в этой проге, заранее спасибо.
PM MAIL   Вверх
Sartorius
Дата 6.10.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Цитата

  стекам отбой, препод ошибся номером лабы и отменил стеки в этой проге, заранее спасибо

 smile  smile  smile  жжошь....
PM MAIL ICQ   Вверх
Snoooppy
Дата 6.10.2006, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.5.2006

Репутация: нет
Всего: нет



Цитата(Sartorius @ 6.10.2006,  20:14)
Цитата

  стекам отбой, препод ошибся номером лабы и отменил стеки в этой проге, заранее спасибо

 smile  smile  smile  жжошь....

ну а че ты хотел если у нас препод по прогрммированию старая бабка-ламерша, и мы такими же будим с ней.....обидно....
PM MAIL   Вверх
volvo877
Дата 6.10.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(Snoooppy @  6.10.2006,  18:39 Найти цитируемый пост)
попытался перевести в паскаль, ни че не понял

Вот Паскаль-программа:
Код
uses CRT;

Procedure LineCoff(x1,x2,y1,y2:Real; var A,B:Real);
var A1:Real;
begin
  A1:=X1-X2;
  A:=Y1-Y2;
  A:=A/A1;
  B:=Y1-X1*A;
end;

function PixDoub(A1,A2,B1,B2:Real; var X,Y:real):boolean;
const
  eps = 10e-5;
begin
  PixDoub := False;

  if abs(a1 - a2) < eps then begin
    PixDoub := True; exit
  end;

  X:=(B2-B1)/(A1-A2);
  Y:=A1*X+B1;
end;

var
  A1,A2,B1,B2,x,y:real;
  Ax, Ay, Bx, By, Cx, Cy, Dx, Dy: real;
begin
  write('Координаты Ax, Ay (через пробел): '); readln(Ax, Ay);
  write('Координаты Bx, By (через пробел): '); readln(Bx, By);
  write('Координаты Cx, Cy (через пробел): '); readln(Cx, Cy);
  write('Координаты Dx, Dy (через пробел): '); readln(Dx, Dy);
  clrscr;

  // AB & CD
  writeln('AB & CD');
  LineCoff(Ax, Bx, Ay, By, A1, B1);
  LineCoff(Cx, Dx, Cy, Dy, A2, B2);

  if PixDoub(A1,A2,B1,B2,X,Y) then writeln('линии паралельны')
  else writeln('X = ', X:10:5, ' Y = ', Y:10:5);

  // AC & BD
  writeln('AC & BD');
  LineCoff(Ax, Cx, Ay, Cy, A1, B1);
  LineCoff(Bx, Dx, By, Dy, A2, B2);

  if PixDoub(A1,A2,B1,B2,X,Y) then writeln('линии паралельны')
  else writeln('X = ', X:10:5, ' Y = ', Y:10:5);

  // AD & CB
  writeln('AD & CB');
  LineCoff(Ax, Dx, Ay, Dy, A1, B1);
  LineCoff(Cx, Bx, Cy, By, A2, B2);

  if PixDoub(A1,A2,B1,B2,X,Y) then writeln('линии паралельны')
  else writeln('X = ', X:10:5, ' Y = ', Y:10:5);
  readln;
end.

PM MAIL   Вверх
Albinos_x
Дата 7.10.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 2
Всего: 108



переводить не стал, т.к volvo877 это уже сделал... быстро накидал на делфи прогу для проверки алгоритма... в общем вот:

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Project1.zip 221,76 Kb


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1017 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.