|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2017, 22:09 | #1 |
Регистрация: 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; |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с классами и методами ( С++ ) | 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 |