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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2012, 10:49   #1
ULTRAS.K
 
Регистрация: 12.03.2012
Сообщений: 9
По умолчанию Выводит объекты после перегрузки неправильно.

Значит нужно перегрузить операцию - c=a-b и объекты а,b,c вывести до и после этой операции,до перегрузки выводит верно,после нее третий объект также находит верно,а вот взвависимости от последовательности 1 из начальных объектов выводит неправильно,присваивая ему значение третьего,вообщем если есть у кого соображения,то я жду.
Код:
class massiv
{friend ostream &operator<<(ostream&,const massiv &);
public:
	massiv();
	massiv(int);
	massiv(const massiv &);
	~massiv();
	massiv &operator-(const massiv &);
	massiv &operator=(const massiv &);
	void input();
   void output();
private:
	int *ms;
	int n;
};
massiv::massiv():ms(0)
{}
massiv::massiv(int a)
{
	n=a;
	ms=new int[n];
}
massiv::massiv(const massiv &copy)
{
	n=copy.n;
	ms=new int[n];

	for (int i=0;i<n;i++)
	{
		ms[i]=copy.ms[i];
	}
}
massiv::~massiv()
{delete[]ms;}
massiv &massiv::operator-( const massiv& a)
{
for (int  i = 0; i < n; i++)
ms[i] -= a.ms[i];
return *this;
}
void massiv::input() 
{       
	cout<<"\t Enter the quantity elements of the massiv : ";
    cin>>n;
    delete[] ms;
    ms = new int[n];
    cout<<"\n\t Massiv " <<endl;
    for(int i=0; i<n; i++)                      
    {
		cout<<"\t a["<<i+1<<"]: ";
        cin>>ms[i];
    }
}
void massiv::output() 
{ 
	 
	for(int i=0; i<n; i++)                    
    {
		cout<<" "<<ms[i];
    }
} 
 massiv &massiv::operator=(const massiv &left)
{
	if (&left !=this)
	{
		delete[]ms;
		n=left.n;
		ms=new int[n];
		for (int i=0;i<n;i++)
			ms[i]=left.ms[i];
	}
	return *this;
}
ostream &operator<<(ostream &output,const massiv &m)
{
for(int i=0; i<m.n; i++)
output<<*(m.ms+i)<<" ";
return output;
}
int main()
{
	massiv a,b,c;
	a.input();
	cout<<a;
	b.input();
	cout<<b;
	cout<<endl;
	c=a-b;
	cout<<c;
	cout<<b;
	cout<<a;
}

Последний раз редактировалось Stilet; 12.03.2012 в 10:53.
ULTRAS.K вне форума Ответить с цитированием
Старый 12.03.2012, 17:42   #2
ULTRAS.K
 
Регистрация: 12.03.2012
Сообщений: 9
По умолчанию

ну неужели никто не знает
ULTRAS.K вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
после подтверждения через почту выводит на страницу KWN, lnc PHP 2 02.03.2012 14:39
При вводи данных неправильно выводит на экран Sylar9 Общие вопросы C/C++ 4 26.10.2011 12:06
как записать фрагмент программы,чтобы после 3 введёных неправильно паролей она закрывалась? Draiv93 Microsoft Office Access 2 23.04.2011 13:08
реально ли, рисовать объекты в 3d maxе а после вставять в delfi? AVA Общие вопросы Delphi 1 22.03.2010 23:24
C++ массивы - неправильно выводит мнимальный и максимальный элемент((( Blondy Помощь студентам 1 02.12.2009 15:46