Форум программистов, компьютерный форум CyberForum.ru

Перегрузка стандартных операций - C++

Восстановить пароль Регистрация
 
Only_Loko
 Аватар для Only_Loko
10 / 10 / 0
Регистрация: 20.09.2013
Сообщений: 22
20.10.2013, 22:36     Перегрузка стандартных операций #1
Здравствуйте! В общем есть задание:
Составить описание класса для представления одномерных массивов вещественных чисел (векторов):
C++ (Qt)
1
2
3
4
5
6
7
8
9
class TVector{
private:
double *v;   // одномерный массив
int size;      // количество элементов
int index_l;   // нижний индекс
int index_h;   // верхний индекс
public:};
При создании объектов класса TVector предусмотреть возможность задания произвольных границ
индексов, определяемые полями index_l и index_h.

Я не пойму где мне использовать(и как) поля index_l и index_h. Здесь же меня просят перегрузить операцию []:
[ ] – операция индексирования, т.е. обращение к отдельному элементу
массива с контролем выхода за границы, определяемые index_l и index_h;
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include<iostream>
#include<cmath>
#include<Windows.h>
#include<process.h>
 
using namespace std;
 
class TVector{
private:
    T *v;
    int size;
    int index_l;
    int index_h;
public:
    TVector();  //конструктор по умолчанию
    TVector(int n);      //конструктор с параметрами
    TVector(const TVector &ob);    //конструктор копий
    ~TVector();
    TVector operator + (const TVector&); 
        TVector operator = (const TVector&); 
        TVector operator - (const TVector&); 
        T operator * (const TVector&);  
};
TVector::TVector() // реализация конструктора по умолчанию
{ 
      size = 0;
      v = new T[size]; 
} 
 
TVector::TVector(int n) // реализация конструктора с параметрами
{  
    size= n;
    v = new T[size];  
    for ( int i = 0; i <size; ++i) 
          v[i]= 0;
 
} 
 
TVector::TVector(const TVector &ob) // реализация конструктора копии
{   
    size = ob.size; 
    v = new T[size];   
    for ( int i = 0; i <size; ++i) 
         v[i]= ob.v[i];
 
}  
 
TVector::~TVector() // деструктор
{  
    delete[] v;
}
 
 
TVector TVector::operator=(const TVector& ob) // оператор присваивания
{ 
    if(this->size!=ob.size)
    {
        cout<<"Ошибка! Разный размер векторов!"<<endl;
        exit(1);
        
    }
    else{
    int i;                      
    for ( i = 0; i < this->size; ++i) 
            this->v[i] = ob.v[i]; 
    return *this;
    }
} 
int main()
{
int n1, n2;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Введите размер 1-го вектора\n";
    cin>>n1;
    cout<<"Введите размерность 2-го вектора\n";
    cin>>n2;
    TVector obj(n1), obj2(n2), obj3(n1);
    cout<<"Введите элементы 1-го вектора: \n";
    cin>>obj;
    cout<<"Введите элементы 2-го вектора: \n";
    cin>>obj2;
    obj3=obj+obj2;
    cout<<"Сумма векторов: "<<obj3<<endl;
    obj3=obj-obj2;
    cout<<"Разность векторов: "<<obj3<<endl;
    T pr=obj*obj2;
    cout<<"Скалярное произведение векторов: \n"<<pr<<endl;
    obj2++;
   ...\\и так далее
}
Буду благодарен, если приведете код для операции индексирования)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2013, 22:36     Перегрузка стандартных операций
Посмотрите здесь:

C++ Перегрузка операций
C++ Перегрузка стандартных операций
C++ Класс "Массив". Перегрузка стандартных операций
Перегрузка стандартных операций C++
Перегрузка операций C++
Перегрузка стандартных операций C++
C++ Перегрузка стандартных операций
C++ Перегрузка операций

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FiLF
52 / 52 / 15
Регистрация: 05.09.2013
Сообщений: 1,088
22.10.2013, 07:35     Перегрузка стандартных операций #2
Возможно, Вы можете работать только с частью массива от index_l до index_h. Остальная часть массива недоступна.
Yandex
Объявления
22.10.2013, 07:35     Перегрузка стандартных операций
Ответ Создать тему
Опции темы

Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru