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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.12.2008, 14:59   #1
Lioness
Пользователь
 
Аватар для Lioness
 
Регистрация: 03.01.2008
Сообщений: 20
Вопрос Конструкторы и классы С++

Добрый день! Делаю курсовую работу, несколько заданий. Возникают вопросы, вот и хочу обратиться за помощью.


Задание 1
1. Опишите класс «Материальная точка на плоскости»
Данные класса: координаты на плоскости, масса и статический элемент – количество точек.
Конструкторы класса:
Конструктор по умолчанию «точка нулевой массы в начале координат», конструктор точки известной массы в начале координат и конструктор произвольной точки.
2. Определите методы:
Ввод точки, вывод, определение расстояния от начала координат.
3. Объявите точку с центром в начале координат и произвольную точку как статические объекты созданного типа, найдите для каждой расстояние от начала координат.
4. Объявите динамический объект по умолчанию, введите данные и выведите на экран.
5. Объявите массив из 2-3 точек с присваиванием им значений при создании объектов.
6. Разработайте метод графического отображения объекта на экране.



вот набросала код:
подскажите что делать дальше (меня в основном интересуют 4,5,6 пункты), и есть или нет ошибки.

Код:
#include <stdio.h>
class Tochka
{
private:
float x,y,z;
float m,n; // n-kolichestvo tochek

public:
Tochka(float x1, float y1, float z1, float m1) {
x=x1;
y=y1;
z=z1;
m=m1;
}
Tochka() {
x=y=z=0;
m=0;
}
Void Out()
{
printf("x=%f, y=%f, z=%f, m=%f\n", x,y,z,m);
}
}; //end of Tochka

Void main (void)
{
Tochka A;
A.Out();
Tochka B (0,1,1,0)
D.Out();
}

Последний раз редактировалось Lioness; 05.12.2008 в 15:05.
Lioness вне форума
Старый 05.12.2008, 19:20   #2
_alexey_
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 13
По умолчанию

1. если я правильно понял задание то n должна объявляться как
static float n;
4. Tochka* x = new Tochka;
.....
// ввод данных и вывод на экран
.....
5.
Код:
Tochka array[2] = {
	Tochka(2.0f, 3.0f, 4.0f, 5.0f),
	Tochka(5.0f, 2.0f, 1.0f, 4.0f) };
6. выводить надо именно в текстовом режиме?
_alexey_ вне форума
Старый 05.12.2008, 20:11   #3
Lioness
Пользователь
 
Аватар для Lioness
 
Регистрация: 03.01.2008
Сообщений: 20
По умолчанию

спасибо за помощь! а 6ю надо выводить примерно так:

Код:
void show()
{
setcolor(GREEN);
circle (x,y,r);
}
вот кстати еще 2е задание, не подскажите как делать?

Задание 2
1. Перегрузите операцию сложения материальных точек с использованием операции – метода класса, и операцию сложения точки с числом для увеличения массы на это число с использованием дружественной функции. Смысл сложения для точек – нахождение центра тяжести масс.

2. Перегрузите унарную операцию ++ для инкремента массы как метод класса, а – как дружественную функцию.
3. Перегрузите операцию присваивания точек.
4. Перегрузите операцию сравнения = = для точек.

Последний раз редактировалось Lioness; 05.12.2008 в 20:15.
Lioness вне форума
Старый 05.12.2008, 21:18   #4
_alexey_
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 13
По умолчанию

а что именно во втором задании неполучается? там тока добавить несколько операторов к классу и всё.
_alexey_ вне форума
Старый 06.12.2008, 19:52   #5
Lioness
Пользователь
 
Аватар для Lioness
 
Регистрация: 03.01.2008
Сообщений: 20
По умолчанию

я забыла как перегружать, вот в чем дело))
Lioness вне форума
Старый 06.12.2008, 20:01   #6
_alexey_
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 13
По умолчанию

Код:
class Tochka {
	...
	friend Tochka operator + (const Tochka& lhs, const Tochka& rhs);
	friend Tochka& operator ++ (const Tochka& rhs);
	bool operator == (const Tochka& rhs);
	Tochka& operator = (const Tochka& rhs);
	...
};
Tochka operator + (const Tochka& lhs, const Tochka& rhs){
	Tochka nrv(/*x,y,z,m вычисляются по формуле*/);
	return nrv;
}
Tochka& operator ++ (const Tochka& rhs){
	rhs.m++;
}
bool Tochka::operator == (const Tochka& rhs){
	...
}
Tochka& operator = (const Tochka& rhs){
	...
}
ненадо забывать
_alexey_ вне форума
Старый 09.12.2008, 15:41   #7
Lioness
Пользователь
 
Аватар для Lioness
 
Регистрация: 03.01.2008
Сообщений: 20
По умолчанию

спасибо огромное!))) А можно еще спросить, тут третье задание, его куда вставлять в этой программе?


Задание 3
1. Опишите класс «Система материальных точек», имеющий данные о количестве материальных точек. Определите конструктор системы.
2. Определите координату центра тяжести системы.
3. Для вывода полной информации об объекте используйте методы базового класса.
Lioness вне форума
Старый 02.11.2011, 16:43   #8
настюх
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 16
По умолчанию классы

Объясните (можно шаблонами),пожалуйста,как создавать классы по принципу дерева,очереди,стека и дека...
настюх вне форума
Старый 02.11.2011, 16:47   #9
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Что такое "класс по принципу очереди"? Можно сделать класс, реализующий интерфейс очереди. Интерфейс очереди и стека в основе одинаков: методы Push() и Pop(). Двойная очередь (dequeue) имеет две пары методов: "передние" и "задние". Дерево - в первую очередь структура данных, а не интерфейс; тип графа.
Abstraction вне форума
Старый 02.11.2011, 17:08   #10
настюх
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 16
По умолчанию

Прокомментируйте,пожалуйста, код,очень сложно разобраться в программе:
Код:

# include <iostream>
using namespace std;
class node 
{
public:
	int a;
	node * next;
	node (int _a)
{
	a=_a;
	next=NULL;
}
};
class stack
{
	node * top;
public:
	stack() {top=NULL;}
	~stack ()
{
	while (top)
	delete top;
	top=top->next;
}

void print_stack()
{
	node * temp = new node (0);
	temp=top;
	while (temp) {cout<<temp->a<<" "; temp=temp->next;} 
}
void add_stack (int a)
{
	node * temp = new node (a);
	if (!top) top=temp;
	else {temp->next=top; top=temp;} 
}
void del_node (int a)
{
	node * temp = new node (a);
	node * t = new node (a);
	t=top;
	temp=top->next;
	if (top->a==a) {top=top->next; return;}
		while (temp)
		{
			if (temp->a==a)
			{			
				t->next=temp->next;
				delete temp;
				return;
			}
		temp=temp->next;
		t=t->next;
		}
}
bool poisk (int a)
{
	bool f=false;
	node * temp = new node (0);
	temp=top;
while (temp) 
{ 
	if (temp->a==a) f=true;
	temp=temp->next;
}
return f;
}
stack * peresechenie_stack (stack * S)
{
	stack *result = new stack ();
	node * temp = new node (0);
	temp=top;
while (temp)
{
	if (S->poisk(temp->a)) result->add_stack(temp->a);
	temp=temp->next;
}
return result;
}
stack * obedinenie_stack (stack * S)
{
	stack *result = new stack ();
	result=this;
	node * temp = new node (0);
	temp=S->top;
while (temp)
{
	if (!this->poisk(temp->a)) result->add_stack(temp->a);
	temp=temp->next;
}
	return result;
}
stack * dopolnenie_stack (stack * S) //из первого стека удаляем второй
{
	stack *result = new stack ();
	result=this;
	stack *p = new stack ();
	p=this->peresechenie_stack(S);
	node * temp = new node (0);
	temp=p->top;
while (temp)
{
	this->del_node(temp->a);
	temp=temp->next;
}
	return result;

}

};
void main ()
{
	setlocale(LC_ALL, "Russian");
	int a=1;
	stack * A= new stack ();
while (a)
{ 
	cin>>a; 
	if (!a)break;
	A->add_stack(a);
}
cout<<"стек"<<endl;
A->print_stack();
stack * B= new stack ();
a=1;
while (a)
{ 
	cin>>a; 
	if (!a) break;
	B->add_stack(a);}
	cout<<"\nстек"<<endl;
	B->print_stack();
	cout<<"\nпересечение"<<endl;
	(A->peresechenie_stack(B))->print_stack();
	cout<<"\nобъединение"<<endl;
	(A->obedinenie_stack(B))->print_stack();
	cout<<"\nдополнение"<<endl;
	(A->dopolnenie_stack(B))->print_stack();
	system ("pause");

}
настюх вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
классы в С++ kadaffi Помощь студентам 1 18.11.2008 09:30
Классы MaxiMILLION Помощь студентам 4 12.10.2008 14:05
Классы Старовъръ Общие вопросы Delphi 4 26.06.2008 17:00