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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2017, 22:09   #1
alex1998109
 
Регистрация: 04.10.2016
Сообщений: 7
По умолчанию Работа с методами классов, перегрузкой, дружественными ф-циями

Был бы очень благодарен любой помощи. Задача: 1)Создать класс (дин массив типа float), содержащий конструктор по умолчанию, ф-цию ввода с клавы и вывод. 2) Добавить в определение класса перегрузку оператора присваивания (==). 3) Добавить перегрузку операции объект+=число. 4) Добавить перегрузку операции равно (==). Добавить в определение операций перегрузку операций пункта 5 и 6 5) С помощью дружественной ф-ции сделать сцепление массивов, например: массив 18325 + массив 614 = массив 18325614 .6) С помощью метода класса сделать операцию не равно (!=). Не понимаю как сделать 5 и 6 пункт. Все остальное (1-4 пункт) написаны правильно и корректно работают. Любая помощь будет хороша с 5 и 6 пунктом))

#include <iostream>
#include "conio.h"
#include <stdlib.h>
#include "iomanip"
#include "string.h"

using namespace std;

class TArray
{
private:
float *a;// массив эл-тов
int m;// количество эл-тов

public:
TArray (int mm=5, float aa=3);//конструктор по умолчанию
~TArray();//деструктор
void vvod();//ввод
void vivod();//вывод
TArray &operator=(TArray &x); //перегрузка оператора присваивани€
TArray &operator+=(float f); //перегрузка операции объект+=число
friend int operator==(TArray &z, TArray &w); //перегрузка операции == дл€ объектов
friend int operator+(TArray &z, TArray &w);// пункт 5
int operator!=(TArray &z); //пункт 6
};

TArray::TArray(int mm, float aa) //конструктор
{
cout<<"–аботает конструктор по умолчанию"<<endl;
m = mm;
a = new float[m];
for (int i=0; i<m; i++)
a[i]=aa;
}

TArray::~TArray() //деструктор
{
delete []a;
}

void TArray::vvod() //ввод
{
cout<<"¬ведите количество элементов в массиве типа float: "<<endl;
cin>>m;
cout<<"¬ведите значени€ массива: "<<endl;
for (int i=0; i<m; i++)
cin>> a[i];
}

void TArray::vivod() //вывод
{
cout<<"¬ывод массива a типа float из "<<m<<" эл-тов: "<<endl;
for (int i=0; i<m; i++)
cout<<a[i]<<" ";
}

TArray&TArray:perator=(TArray &x)//перегрузка присваивани€
{
delete []a;
m=x.m;
a=new float[m];
for (int i=0; i<m; i++)
a[i]=x.a[i];
return *this;
}

TArray&TArray:perator+=(float f) //перегрузка объект += число
{
for (int i=0; i<m; i++)
a[i]+=f;

return *this;
}

int operator==(TArray &z, TArray &w) //друж фун-ци€ перегрузки ==
{
if (z.m!=w.m) return 0;
for (int i=0; i<z.m; i++)
if (z.a[i]!=w.a[i]) return 0;
return 1;
}

/*int operator+() //друж фун-ци€ сцеплени€ (пункт 5)
{
int k=3+m;
}*/

int TArray:perator!=(TArray &z, TArray &w) //спомощью метода класса != (пункт 6)

{
if (z.m!=w.m) return 1;
for (int i=0; i<z.m; i++)
if (z.a[i]!=w.a[i])
return 1;
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");

TArray a1, a2(3, 4);
cout<<"¬ыполнение перегрузки присваивани€"<<endl;
a1.vivod();
cout<<endl;
cout<<"второй массив: "; a2.vivod(); // 3 4
cout<<endl;
a1=a2;
cout<<"массив после перегрузки: "; a1.vivod(); // 3 4
cout<<endl;
cout<<"массив который был присвоен: "; a1.vivod(); // 3 4
cout<<endl;

cout<<"¬ыполнение перегрузки объект+число"<<endl;
cout<<"ћассив до перегрузки: "; a1.vivod(); // 3 4
cout<<endl;
a1+=2;
cout<<"–езультат после выполени€ перегрузки объект+число: "<<endl; a1.vivod(); // 3 6
cout<<endl;

TArray a3(3, 4); //3 по 4

cout<<"¬ыполнение перегрузки операции 'равно'"<<endl;
cout<<"первый массив: "; a1.vivod(); //3 по 6
cout<<endl;
cout<<"второй массив: "; a2.vivod(); //3 по 4
cout<<endl;
cout<<"третий массив: "; a3.vivod(); //3 по 4
cout<<endl;
cout<<"¬ыполн€етс€ перегрузка операции 'равно' дл€ 1 и 2"<<endl;
if (a1==a2) cout<<"равны"<<endl;
else cout <<"не равны"<<endl;

cout<<"¬ыполн€етс€ перегрузка операции 'равно' дл€ 2 и 3"<<endl;
if (a2==a3) cout<<"равны"<<endl;
else cout <<"не равны"<<endl;

cout<<"¬ыполн€етс€ операци€ 'не равно' дл€ объектов "<<endl;
cout<<"1: "; a1.vivod(); //3 по 6
cout<<endl;
cout<<"2: "; a2.vivod(); //3 по 4
cout<<endl;
cout<<"3 (по умолчанию): "; a3.vivod(); //3 по 4
cout<<endl;
//////////////////////////////пункт 5
cout<<"–аботает перегрузка дл€ 1 и 2"<<endl;
if (a1!=a2) cout<<"не равны"<<endl;
else cout <<"равны"<<endl;

cout<<"–аботает перегрузка дл€ 2 и 3"<<endl;
if (a2!=a3) cout<<"не равны"<<endl;
else cout <<"равны"<<endl;
cout<<"*онец теста"<<endl;

////////////////////пункт 6

getch();
return 0;
alex1998109 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами и методами ( С++ ) RapDog Помощь студентам 3 26.04.2016 14:03
Два числа называют дружественными, если каждое из них равно сумме всех Zhasik Паскаль, Turbo Pascal, PascalABC.NET 1 28.12.2010 18:07
Проблема с методами классов в C#. Булкин Помощь студентам 2 19.07.2010 12:54
Работа со списками методами STL JeyKip Общие вопросы C/C++ 5 17.12.2009 02:13
Работа со строками и методами в Java PavelZet Помощь студентам 1 02.06.2009 05:36