Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2011, 00:06   #1
Dimbaler
Новичок
Джуниор
 
Регистрация: 16.02.2011
Сообщений: 4
По умолчанию Задача о взаимном расположении прямых на плоскости

Доброго времени суток, знатоки!
Прошу помощи, 2 дня для такой задачи - это несерьезно. Не могу решить.

Даны точки A, B, C, D. Определить взаимное расположение прямых AB и CD (пересекаются, не пересекаются, совпадают).

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

данные точек считываются из файла. структура такая
2 1
2 4
0 0
4 4
Dimbaler вне форума Ответить с цитированием
Старый 16.02.2011, 00:09   #2
Dimbaler
Новичок
Джуниор
 
Регистрация: 16.02.2011
Сообщений: 4
По умолчанию

считываются я так понимаю так:

read(f,x1);read(f,y1);
read(f,x2);read(f,y2);
read(f,x3);read(f,y3);
read(f,x4);read(f,y4);

далее высчитываем коэффициенты:

А:=y2-y1;
B:=x1=x2;
C:=x1*(y1-y2)+y1*(x2-x1);

Последний раз редактировалось Dimbaler; 16.02.2011 в 11:04.
Dimbaler вне форума Ответить с цитированием
Старый 16.02.2011, 22:00   #3
Илья Топор
Новичок
Джуниор
 
Регистрация: 16.02.2011
Сообщений: 2
По умолчанию

y=ax+b
линии пересекаются при a1!=a2, лини паралельны при а1=а2 и b1!=b2, линии совпадают при a1=a2 и b1=b2;
теперь нужно написать уравнение прямой, по двум её известным точкам A(x1;y1), B(x2,y2)
уравнение искомой прямой:
(x-x1)/(x2-x1) = ( y-y1)/(y2-y1);
y= ((x-x1)/(x2-x1))*(y2-y1) + y1;
путем нехитрых вычислений, получаем, что a=(y2-y1)/(x2-x1); b=y1;
теперь осталось закодить это все.
#include"stdafx.h"
#include <iostream>
using namespace std;

void main(void)
{
double x1,x2=1,x3,x4=1;//х-координата заданных точек
double y1,y2,y3,y4;//y-координата заданных точек
double k1,k2;//угловой коэф. первой и второй прямых
k1=(y2-y1)/(x2-x1);
k2=(y4-y3)/(x4-x3);
if((k1==k2)&&(y1!=y3))
cout<<"Прямые пралельны";
if((k1==k2)&&(y1==y3))
cout<<"Пряме совпадают";
if(k1!=k2)
cout<<"прямые пересекаются";
}

Ну взятие из файла сам напиши.
Илья Топор вне форума Ответить с цитированием
Старый 16.02.2011, 22:19   #4
Dimbaler
Новичок
Джуниор
 
Регистрация: 16.02.2011
Сообщений: 4
По умолчанию

Благодарствую!
Только я си не знаю...
Dimbaler вне форума Ответить с цитированием
Старый 17.02.2011, 11:29   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

переведу )

Код:
 
procedure имя ;
var x1, x2, x3, x4 : double ;//х-координата заданных точек
y1, y2, y3, y4 : double ;//y-координата заданных точек
k1, k2 : double;//угловой коэф. первой и второй прямых 
begin
чтение ;
k1 :=(y2-y1)/(x2-x1);
k2 :=(y4-y3)/(x4-x3);

if (k1=k2) and (y1 <> y3)
  then writeln("Прямые пралельны");
if (k1=k2) and (y1=y3)
  then writeln("Пряме совпадают");
if (k1 <> k2) 
  then writeln("прямые пересекаются");
end;
чтение - глянь любой учебник по паскалю, там точно есть чтение файла (команды типа Assign , reset , closefile), уточню, что ты написал структуру данных с пробелами, а считываешь без пробелов, и перевод строки не учитываешь (не read a readln)
phomm вне форума Ответить с цитированием
Старый 17.02.2011, 13:25   #6
Dimbaler
Новичок
Джуниор
 
Регистрация: 16.02.2011
Сообщений: 4
По умолчанию

спасиб.

чтение

assign(f,name);
reset(f);
read(f,x1);readln(f,y1);
read(f,x2);readln(f,y2);
read(f,x3);readln(f,y3);
read(f,x4);readln(f,y4);
close(f);

read пробелы не читает
Dimbaler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точка пересечения трех прямых на плоскости QuadroX Помощь студентам 21 16.05.2010 01:10
Задача про точки на плоскости Единорог Помощь студентам 3 16.12.2009 17:30
скрипт о расположении шрифтов a585 JavaScript, Ajax 10 08.07.2009 14:51
При расположении Label на компонентах, место под Label, не реагирует на событие onClick. NavigatorNeba Компоненты Delphi 3 15.11.2008 19:56
Задача: заполнение плоскости объектами, максимально плотно rosi4 Помощь студентам 1 15.11.2008 13:42