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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2012, 17:56   #1
PointBreak
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 15
По умолчанию Классы в С++

Здравствуйте! Помогите пожалуйста в написании этой программы:
Создать класс для хранения трехмерных векторов с интерфейсом:
а) Конструктор по умолчанию;
б) Конструктор копирования;
в) Вывод на экран в привычном виде;
4) Метод индексирования (возвращение координаты по заданному номеру).
Написать программу, демонстрирующую все возможности класса.
Код:
#include<iostream>

using namespace std;

class Vector3D
{
public:
	double x, y, z;
private:
	Vector3D();
	Vector3D(const Vector3D &v);
	void print();
	int index(int i) const;
};
Vector3D::Vector3D()
{
	x=y=z=0;
}
Vector3D::Vector3D(const Vector3D &v)
{
	x=v.x;
	y=v.y;
	z=v.z;
}
void Vector3D::print(){
// ?
}
int Vector3D::index(int i) const
{
	switch(i)
	{
	case 0:
		return x;
	case 1:
		return y;
	case 2:
		return z;
	}
	return 0;
}
int main()
{
	void();
	
	system("pause");
	return 0;
}
вот у меня вопрос, как написать вывод на экран?)
PointBreak вне форума Ответить с цитированием
Старый 10.09.2012, 18:44   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
void Vector3D::print(){
   // ?
   std ::cout << "x: " << x \
   << "y: " << y \
   << "z: << z;
}
не?
rrrFer вне форума Ответить с цитированием
Старый 10.09.2012, 18:57   #3
PointBreak
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 15
По умолчанию

немного неправильно я сформулировала вопрос)
это то так
Код:
void Vector3D::print(){
	cout << "(" << x << "," << y << "," << z << ")"<< endl;
}
просто не понимаю где пишется cin>> x>>y>>z; для того, чтобы ввести координаты. в main'е же не получится запросить их,так?
PointBreak вне форума Ответить с цитированием
Старый 10.09.2012, 19:05   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
просто не понимаю где пишется cin>> x>>y>>z; для того, чтобы ввести координаты. в main'е же не получится запросить их,так?
получится, в маине их и надо запрашивать, по-хорошему.
Создавать объект надо через конструктор(параметры можно передавать туда), но если подходящего конструктора нет - нужен сеттер типа
setCoord( int x_, int y_, int z_ ) { x = x_, y = y_, z = z_; }

Еще можешь перегрузить операторы >> и << для этого - это тоже верно и удобно.
rrrFer вне форума Ответить с цитированием
Старый 10.09.2012, 19:07   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
public:
	double x, y, z;
private:
	Vector3D();
	Vector3D(const Vector3D &v);
	void print();
	int index(int i) const;
слова public и private поменяй местами и прочитай зачем они нужны, чтобы больше такой бред не писать )
rrrFer вне форума Ответить с цитированием
Старый 10.09.2012, 19:11   #6
PointBreak
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 15
По умолчанию

ааа) спасибо) я даже не заметила сначала)
перегрузка >> и << - это так: (?)
Код:
ostream& operator<<(ostream &os, const Vector3D& v)
{
	os << '(' << v.index(0) << ',' << v.index(1) << ',' << v.index(2) << ')';
	return os;
}

istream& operator>>(istream &is, Vector3D& v)
{
	int x,y,z;
	
	is >> x >> y >> z;

	return is;
}
PointBreak вне форума Ответить с цитированием
Старый 10.09.2012, 19:17   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
это так: (?)
не совсем.

Код:
istream& operator>>(istream &is, Vector3D& v)
{
	int x,y,z;
	
	is >> x >> y >> z;

	return is;
}
в объэкте v есть поля x,y,z зачем вам локальные переменные? ваши локальные переменные в операторе ввода будут уничтожены при возврате из функции. Значения не сохранятся.
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы programing Общие вопросы C/C++ 2 02.03.2012 20:44
C# Классы MarihuanaP Помощь студентам 0 05.12.2011 20:56
Классы с++ Blad47 Помощь студентам 11 13.10.2011 20:36
Классы С++ Денис999 Помощь студентам 4 07.03.2011 16:54