Форум программистов, компьютерный форум CyberForum.ru

Наследование классов с++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ MAX элемент http://www.cyberforum.ru/cpp-beginners/thread218768.html
Всем доброго времени суток. Помогите с текстом программы #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> using namespace std; int main() { int n,m; printf("\n Введите размерность ");
C++ Перегрузка оператора с использованием дружественной функции Здравствуйте! Помогите разобраться, в чем ошибка? Посмотрела в интернете, делаю по примерам, но программа не компилируется. Программа по перемножению чисел и дробей. Когда не использую дружественную функцию - все работает. Ошибки такие: 50 ISO C++ forbids declaration of `operator*' with no type 50 no `int Fraction::operator*(Fraction&)' member function declared in class `Fraction' In... http://www.cyberforum.ru/cpp-beginners/thread218766.html
C++ Вычислить и вывести на печать таблицу значений функции
вычислить и вывести на печать информ. таблицу значений функции. y=корень квадратный(x^3+2x-1)б при x<2 y=корень квадратный(x^2+3x-5),при x>=2 x принадлежит отрезку шаг изменяется 0,05
Варианты сортировок C++
Здравствуйте! Вот есть два способа сортировки: #include <iostream> using namespace std; int main () { const int n=20; int b; int i, a, j; for (i=0; i<n; i++) {
C++ Стек на основе вектора http://www.cyberforum.ru/cpp-beginners/thread218750.html
Здравствуйте! Очень нужна ваша помощь! Нужно написать программу - модель стека векторной структуры. Есть стек списковой структуры, а вот как сделать с вектором... *dont_know* Здесь показаны их различия http://wwwcdl.bmstu.ru/iu7/stage4.htm Все вроде понятно, но пока ничего не получается... Основная проблема заключается в том, что я не знаю, как задать границы массива......
C++ Прокомментируйте работу у меня есть программа,пожайлуйста прокомментируйте построчно!!!!!!! #include "stdafx.h" #include <iostream>; #include <malloc.h>; using namespace System; using namespace std; int** CreateArray(int n); подробнее

Показать сообщение отдельно
Muse_
Сообщений: n/a
23.12.2010, 15:58     Наследование классов с++
Задача была создать класс "точка", на его базе создать класс "линия", затем на базе "линии"-класс "прямоугольник".
В приведённом тексте программы координаты точки переводятся в полярные координаты и наоброт, точка поворачивается на угол и смещается на заданное расстояние.
Созданы классы, в которых линия и прямоугольник поворачиваются на угол.



Код
#include <conio.h>
#include <iostream>
#include <cmath>
using namespace std;

class Point{
public:
	double xp,yp;
	Point(double x,double y){
		px=x;py=y;xp=x;yp=y;IsDecart=true;
	}
	Point(){
		px=0; py=0;xp=0;yp=0;IsDecart=true;
	}
	void move(double x, double y){px+=x; py+=y;}
	void PolarToDec(double r,double a)
	{
		px=r*cos(a);
		py=r*sin(a);
		IsDecart=true;
	} 
		
	void DecToPolar(double x, double y)
	{
		R=sqrt(px*px+py*py);
		A=atan(py/px);
		IsDecart=false;
	}
		
	void Rot(Point& n,double a)
	{
		R=sqrt((px-n.px)*(px-n.px)+(py-n.py)*(py-n.py));
		px=R*cos(a);
		py=R*sin(a);
	}

	void PrintCol()
	{
		cout<<"Data Point: "<<endl;
		if(IsDecart)
		cout<<"coordinates -            "<<px<<","<<py<<" in decart system";
		else
		cout<<" in polar system"<<" rad,angle "<<R<<","<<A<<endl<<endl;
	}
		

private:
	double px,py,R,A;
	bool IsDecart;

};

class Line:public Point{
public:
	Line(double x, double y, double x1, double y1){m_a.xp=x;m_a.yp=y;m_b.xp=x1;m_b.yp=y1;}
	Line(){m_a.xp=0;m_a.yp=0;m_b.xp=1;m_b.yp=1;}
	
	void move(double x, double y){m_a.xp+=x; m_a.yp+=y; m_b.xp+=x; m_b.yp+=y;}
	void Rot(Point& n, double a)
	{
			R=sqrt((m_a.xp-n.xp)*(m_a.xp-n.xp)+(m_a.yp-n.yp)*(m_a.xp-n.yp));
			m_a.xp=R*cos(a);
			m_a.yp=R*sin(a);
			m_b.xp=R*cos(a);
			m_b.yp=R*cos(a);
	}

	void PrintCol()
	{
		cout<<"Data Line: "<<endl;
		//if(IsDecart)
			cout<<"coordinates -            "<<m_a.xp<<","<<m_a.yp<<","<<m_b.xp<<","<<m_b.yp<<endl<<endl;
		//else
		//	cout<<" in polar system"<<"rad,angle "<<R<<","<<A<<endl;
	}

private:
	Point m_a,m_b;
	double R,A;

};

class Paral:public Line{
public:
	//высота, ширина и верхний угол
	//Paral(Point &a, Point &b, Point &c, Point &d) {
	//	m_a=a;m_b=b;m_c=c;m_d=d;
	//}
	Paral(double a,double b, double height, double width) {/*m_a=a;*/m_a.xp=a;m_a.yp=b; m_b.xp=m_a.xp+width; m_b.yp=m_a.yp;
	m_c.xp=m_a.xp; m_c.yp=m_a.yp+height; m_d.xp=m_a.xp+width; m_d.yp=m_a.yp+height;}
	void move(double x, double y){m_a.xp+=x; m_a.yp+=y; m_b.xp+=x; m_b.yp+=y; m_c.xp+=x; m_c.yp+=y; m_d.xp+=x; m_d.yp+=y;}
	void Rot(Point& n, double a)
	{
		R=sqrt((m_a.xp-n.xp)*(m_a.xp-n.xp)+(m_a.yp-n.yp)*(m_a.xp-n.yp));
		m_a.xp=R*cos(a);
		m_a.yp=R*sin(a);
		m_b.xp=R*cos(a);
		m_b.yp=R*cos(a);
		m_c.xp=R*cos(a);
		m_c.yp=R*sin(a);
		m_d.xp=R*cos(a);
		m_d.yp=R*cos(a);
	}
	void PrintCol()
		{
			cout<<"Data Pryamougol'nik: "<<endl;
			cout<<"coordinates -   A- "<<m_a.xp<<", "<<m_a.yp<<endl<<"\t\tB- "<<m_b.xp<<", "<<m_b.yp;
			cout<<endl<<"\t\tC- "<<m_c.xp<<", "<<m_c.yp<<endl<<"\t\tD- "<<m_d.xp<<", "<<m_d.yp<<endl<<endl;      
		}
private:
	Point m_a,m_b,m_c,m_d;
	double R,A;

};


int main(){
Point t(5,9);
Point n;
n.move(8,9);
n.PrintCol();
t.move(7,3);
t.PolarToDec(45,7);
t.DecToPolar(5,9);
t.Rot(Point(5,6),40);
t.PrintCol();
Line l(5,8,2,4);
l.move(8,2);
l.PrintCol();
//Paral par(Point(4,7),Point(3,8),Point(16,89),Point(1,9));
Paral par(6,7,34,67);
par.PrintCol();
//par.Rot();
//par.PrintCol();
par.Rot(Point(4,6),20);
par.PrintCol();
//Line l(Point(5,8),Point(4,9));



getch();
return 0;
}
Препода не устраивает
1).то, что поворот осуществляется через косинус (не эффективно, долго вычисляется).
2).то, что прямоугольник представлен с помощью 4 точек, а он хотел, чтобы многоугольник был представлен как набор линий и точек (параметры наследуются из предыдущих классов).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru