Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перегрузка операции < для класса вектор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строки (из заданной последовательности слов удалить слова, содержащие числа) ) http://www.cyberforum.ru/cpp-beginners/thread882123.html
Из заданной последовательности слов удалить слова, содержащие числа.
C++ Числа Фибоначчи Последовательность чисел Фибоначчи характеризуется тем, что она начинается с0, далее идет 1, а каждый следующий элемент является суммой двух предыдущих (0, 1, 1,2, 3, 5, 8, 13, 21, ...). Найти первые... http://www.cyberforum.ru/cpp-beginners/thread882122.html
Не работает программа.ошибка.и закрывается C++
В общем написал вот такую программу... она из массива одномерного х(100) делает двумерный... сортирует числа на промежутки (0-9) (10-19) ...(90-99) а затем каждую строку сортирует по...
C++ Написать программу, которая читает с клавиатуры строку символов, преобразует ее и выводит результат на дисплей
Подсчитать количество слов в строке. Помогите плиз.
C++ перевести код из паскаля на C++ http://www.cyberforum.ru/cpp-beginners/thread882096.html
uses CRT; const n=10; type Vector=array of integer; var mas:Vector; m,q:Byte;
C++ Необходимо поправить код в общем программа решает СЛАУ методом Жордана-Гаусса с выбором ведущего элемента, проблема в том, что код вроде бы правильный но выдает ошибку когда я проверяю. #include "StdAfx.h" #include... подробнее

Показать сообщение отдельно
vetal71
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 29
28.05.2013, 20:43  [ТС]
C++
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
#include <iomanip>
 
using namespace std;
 
class Vector
{
    friend istream &operator>> (istream &, Vector &);       // перегруженный оператор ввода
    friend ostream &operator<< (ostream &, const Vector &); // перегруженный оператор вывода
private:
    int *vect;
    int size;
 
public:
    Vector();             // конструктор
    explicit Vector(int); // конструктор с параметром
    ~Vector();            // деструктор
    
    
    void setVector();       // заполнение массива
    void getVector();       // вывод массива
    int &operator[] (int );
    const Vector &operator= (const Vector &); // оператор присваивания  
    const Vector &operator< (const Vector &); // оператор <
    int getSize() const                       // Количество элементов массива
    {
        return size;
    }
};
 
Vector::Vector()          // конструктор по умолчанию
{
    size = 10;                      // по умолчанию размер массива 10 элементов
    vect = new int[size];           // выделяем память
    for (int i=0; i < size; i++)    // инициализация массива
        vect[i] = 0;                        
}
 
Vector::Vector(int _size) // конструктор с параметрами
{
    // если значение параметра больше 0, присвоить size значение _size, иначе - 10 
    size = (_size > 0 ? _size : 10);  
    vect = new int[size];           // выделяем память
    for (int i=0; i < size; i++)    // инициализация массива
        vect[i] = 0;
}
 
Vector::~Vector()         // деструктор
{
    delete [] vect;  // удаляем массив
}
 
// перегруженный оператор ввода, для ввода значений массива с клавиатуры
istream &operator>> (istream & input, Vector &obj)
{
    for (int i = 0; i < obj.size; i++)
        input >> obj.vect[i]; // заполняем массив объекта obj
    return input; // позволяет множественный ввод
}
// перегруженный оператор вывода для класса Vector
ostream &operator<< (ostream &output, const Vector &obj)
{
    for (int i = 0; i < obj.size; i++)
    {
        output << setw(5) // под каждое число выделяется 5 позиций
            << obj.vect[i];
    }
    output << endl; // перенос маркера на новую строку
    return output; // позволяет множественный вывод
}
 
int &Vector::operator[] (int subscript)
{
    if(subscript < 0 || subscript >= size)
    {
        cerr << "\n Ошибка индекса: " << subscript << endl;
        exit(1); // завершить работу программы, неправильный индекс
    }
    return vect[subscript]; // возврат ссылки на элемент массива
}
 
const Vector &Vector::operator= (const Vector &right) // оператор присваивания
{
    if (&right != this) // чтобы не выполнялось самоприсваивание
    {
        if (size != right.size)
        {
            delete [] vect; // освободить пространство
            size = right.size; // установить нужный размер массива
            vect = new int [size]; // выделить память под копируемый массив
        }
 
        for (int ix = 0; ix < size; ix++)
            vect[ix] = right.vect[ix]; // скопировать массив
    }
 
    return *this; 
}
    
//перегрузка оператора <
Vector &Vector::operator< (Vector &a)
{
    if (size = a.size) // 
    {
        int n, m;
        for (int i = 0; i < size; i++)
        {
            if (vect[i] > a.vect[i])
            {
                n = vect[i];
                m = a.vect[i];
                vect[i]   = m;
                a.vect[i] = n;
            }
        }
    }
 
    return *this;
}
 
void Vector::setVector() // заполнение массива
{
    for (int i = 0; i < size; i++)
        cin >> vect[i]; // ввод элемента массива с клавиатуры
}
 
void Vector::getVector() // вывод массива
{
    for (int i = 0; i < size; i++)
        cout << setw(5) << vect[i]; // вывод элементов массива на экран
 
    cout << endl; // новая строка
} 
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int sz;
    cout << "Введите размерность вектора: ";
    cin >> sz;
    cout << endl;
 
    // создаем два объекта a и b
    Vector a(sz);
    cout << "Введите " << sz << " чисел вектора A: " << endl;
    a.setVector(); // заполнение массива с помощью метода класса Vector
    // введенный массив a
    cout << "Вектор A: " << a;
 
    Vector b(sz);
    cout << "Введите " << sz << " чисел вектора B: " << endl;
    b.setVector(); // заполнение массива с помощью метода класса Vector
    // введенный массив b
    cout << "Вектор B: " << b;
 
    if (a < b) 
    {
        cout << a;
        cout << b;
    }
 
    getchar();
    return 0;
}
Добавлено через 4 минуты
в строке
if (a<b)
выдает ошибку "Недопустимое услвоное выражение типа Vector"

Добавлено через 31 минуту
затупил...
вопрос решил. всем спасибо
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.