|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2011, 20:30 | #1 |
Новичок
Джуниор
Регистрация: 01.12.2011
Сообщений: 2
|
Проверка/установка параллельности прямых
Дорогие программисты, пожалуйста, помогите с задачей:
Написать по двум определяющим точкам на плоскости класс линия по двум функциональностям: 1. Дающая возможность проверить параллельность себя и другого какого-то объекта; 2. Делать либо себя, либо принимаемый объект параллельным, т.е. либо какого-то объекта параллельным себе, либо себя параллельным какому-то объекту. Алгоритм: Угол phi между двумя прямыми, заданными уравнениями: y1=k1x+b1 (первая прямая) и y2=k2x+b2 (вторая прямая), может быть вычислен по формуле phi=(k2-k1)/(1+k1k2). Прямые параллельные если phi = 0, если phi не = 0 прямые, не параллельные, тогда k1=k2. Есть такой код: #include "stdafx.h" #include <iostream> using namespace std; class Line //определение класса Line { int m_k1, m_k2, m_b1, m_b2; //объявление прямых public: Line(int m_k1, int m_k2, int m_b1, int m_b2); //конструктор ~Line(); //деструктор void CheckParallel(int phi); void SetParallel(int k1); void ShowParallel(); void Setk1(int k1) {m_k1=k1;}; void Setk2(int k2) {m_k2=k2;}; void Setb1(int b1) {m_b1=b1;}; void Setb2(int b2) {m_b2=b2;}; int Getk1() const {return m_k1;} int Getk2() const {return m_k2;} int Getb1() const {return m_b1;} int Getb2() const {return m_b2;} }; ////конец класса Line Line::CheckParallel(int phi)hi(0) ////функция проверяющая на параллельность линии { int phi; phi = (m_k2-m_k1)/(1+m_k1*m_k2); if(myphi == 0) //Проверка параллельности прямых { std::cout << "Lines are parallel!" << "\n"; } return phi; } Line::SetParallel(int k1) //функция устанавливающая параллельность линий { if(phi != 0) { myk1=myk2; std::cout << "Lines are parallel, will be parallel, if k1=k2:\t" << Line.Getk1() << endl; } return k1; } Line::ShowParallel() //функция показывающая линии { cout << "Первая линия\n \t k1: \t" << Line.Getk1() << "\t b1 \t" << Line.Getb1() << endl; cout << "Вторая линия\n \t k2: \t" << Line.Getk2() << "\t b2 \t" << Line.Getb2() << endl; } Line::Line(int m_k1, int m_k2, int m_b1, int m_b2) //инициализация конструктора { m_k1 = 0; m_k2 = 0; m_b1 = 0; m_b2 = 0; Line.Setk1(20); Line.Setb1(10); Line.Setk2(20); Line.Setb2(10); } Line::~Line() //деструктор { } int main() //функция main() начинает исполнение программы { Line myLine(20, 10, 20, 10); //инициализация прямых myLine.ShowParallel(); //ручной ввод прямых в main() int myk1, myk2, myb1, myb2; cout<<"\nEnter the first line\n\t myk1:\t"; //ввести первую прямую cin>>myk1; cout<<"\tmyb1: \t"; cin>>myb1; cout<<"\nEnter the second line\n\t myk2:\t"; //ввести первую прямую cin>>myk2; cout<<"\tmyb2:\t"; cin>>myb2; int myphi; myphi = (myk2-myk1)/(1+myk1*myk2); if(myphi == 0) //Проверка параллельности прямых { std::cout << "Lines are parallel!" << "\n"; } else //Установка параллельности прямых { myk1=myk2; std::cout << "Lines are parallel, will be parallel, if myk1=myk2:\t" << myk1 << endl; } return 0; //показывает успешное завершение } //конец функции main() |
03.12.2011, 15:22 | #2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
И с чем помочь?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задано множество прямых на плоскости | darya17 | C++ Builder | 1 | 02.06.2011 06:28 |
Точка пересечения трех прямых на плоскости | QuadroX | Помощь студентам | 21 | 16.05.2010 01:10 |
Найти минимальное множество прямых | Inokentiy | Помощь студентам | 12 | 11.05.2010 18:00 |
Построение прямых | Aleksandr | Общие вопросы Delphi | 21 | 19.06.2007 15:44 |