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

Перенагрузка масивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамические структуры данных. Описать структуру с именем NOTE http://www.cyberforum.ru/cpp-beginners/thread824983.html
Описать структуру с именем NOTE, с полями: фамилия, номер телефона, год рождения. Сформировать односвязный список. Реализовать просмотр списка в прямом и обратном порядке, а также добавление нового элемента в список в заданную позицию. Помогите, пожалуйста!
C++ Интеграл Справа задача по С++ Здравствуйте. написал программу и разделил его по блокам но сейчас я тут выложу объеденную #include <stdio.h> #include <locale.h> void interg(function f, double x0, double x1, int n, double x, double y) { int i; double dx; http://www.cyberforum.ru/cpp-beginners/thread824982.html
C++ Сортировка. Счетчики
Всем привет, достаточно долго сижу на этом сайте, вот в первые решил попросить помощи, надеюсь на вас! Вообщем задание было следующее: Отсортировать каждый столбик двумерной матрицы по возрастанию различными способами и вывести на экран количество сравнений и перестановок в каждой сортировке. Собственно программу то я написал, а вот со счетчиками уже около месяца разобраться до конца не могу. ...
В одномерном массиве, вычислить много чего. Всё в описании. Спасите C++
Помогите пожалуйста!.. Вводить из клавиатуры массивы и обрабатывать их, пока на запрос “Хотите продолжать работу дальше (да, нет) ?” пользователь не ответит “нет”. Введены линейные массивы обрабатывать за заданными алгоритмами а), б) и в), какие оформить в виде подпрограмм (функций). В подпрограммах-функциях ни введения, ни выведения данных, не должно быть. Главная функция должна вводить данные...
C++ Соединение нескольких одномерных массивов в одну программу http://www.cyberforum.ru/cpp-beginners/thread824977.html
Помогите пожалуйста решить 4 задачи так, чтобы они были записаны одной программой. 1. Найдите количество элементов, находящихся в диапазоне между двумя заданными числами. 2. Упорядочите элементы массива по убыванию модулей элементов. 3. Найдите сумму элементов массива, расположенных после первого положительного элемента. 4. Из данного массива и другого массива такого же типа, но другой...
C++ Ассоциативный массив в С++ (типо пэхапе) Где можно посмотреть такой класс? Сделал такое, но пространства имен не изучал еще. Как сделать так что бы можно было написать: using namespace Ass; и мне бы не приходилось каждый раз писать расширение области видимости в индексах Ass::ID, Ass::SCORE using namespace std; class Ass { private: подробнее

Показать сообщение отдельно
supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
01.04.2013, 18:59     Перенагрузка масивов
Вот еще код с некоторыми перегрузками операторов

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
#include <iostream>
using namespace std;
 
class Safe
{
    int size;     //Размер массива
    int *arr;   //Указатель для хранения массива
    int how_add; //Сколько было добавлено памяти
public:
    Safe (int SIZE); //Конструктор с параметром
    Safe (const Safe &object); //Конструктор копий
    ~Safe ();        //Деструктор
    void Set_to (); //Дополнение массива значениями
    int View (char flag[8]);  //Получение информации с private переменных
    int &operator[] (int i); //Перегрузка оператора индексирования + контроль границ
    friend ostream &operator<< (ostream &stream, Safe &object);  //Вывод всего массива
    friend istream &operator>> (istream &stream, Safe &object); //Заполнение массива с начала
    friend Safe &operator+ (Safe &object, int ADD);  //Добавление размера
    friend Safe &operator- (Safe &object, int ROB); //Уменьшение размера
};
 
Safe::Safe (int SIZE) //Конструктор с параметром
{
    size = SIZE;
    arr = new int[size];
    cout << '\a';
}
Safe::Safe (const Safe &object) //Конструктор копий
{
    size = object.size;
    arr = new int[size];
    for (int i = 0; i < object.size; i++)
        arr[i] = object.arr[i];
    how_add = object.how_add;
}
Safe::~Safe () //Деструктор
{
    delete[] arr;    cout << '\a' << '\a';
}
 
void Safe::Set_to () //Дополнение массива значениями
{
    for (int i = size - how_add; i < size; i++)
        cin >> arr[i];
}
int  Safe::View (char flag[8]) //Получение информации с private переменных
{
    if (flag == "size" )        return size;        
    else if (flag == "how_add") return how_add;
    else return 0;
}
 
int &Safe::operator[] (int i) //Перегрузка оператора индексирования + контроль границ
{
    if (i < 0 || i > size-1)
        cout << endl << "Warning! Exceeded! " << endl;
    else return arr[i];
}
ostream &operator<< (ostream &stream, Safe &object) //Вывод всего массива
{
    for (int i = 0; i < object.size; i++)
        stream << object[i] << " ";
    return stream;
}
istream &operator>> (istream &stream, Safe &object) //Заполнение массива с начала
{
    for (int i = 0; i < object.size; i++)
        cin >> object[i];
    return stream;
}
Safe &operator+ (Safe &object, int ADD) //Добавление размера
{
    int *temp = object.arr;
    object.arr = new int[object.size+ADD];
    for (int i = 0; i < object.size; i++)
        object.arr[i] = temp[i];
    object.size += ADD;
    object.how_add = ADD;
    delete[] temp;
    return object;
}
Safe &operator- (Safe &object, int ROB) //Уменьшение размера
{
    int *temp = object.arr;
    object.arr = new int[object.size-ROB];
    for (int i = 0; i < object.size-ROB; i++)
        object.arr[i] = temp[i];
    object.size -= ROB;
    delete[] temp;
    return object;
}
 
int main ()
{   setlocale(LC_ALL, "Russian");
 
    int SIZE, add;
    char choice = 'y', way;
 
    cout << "Размер массива: ";     cin  >> SIZE;
    Safe mass(SIZE); //Объект класса Safe – массив размера SIZE
 
    cout << "Заполнение: ";     cin >> mass;
    cout << "Просмотр массива: "        << mass << endl;
    while (true)
    {
        cout << endl << "Добавить размер: ";   cin >> add;   
        mass+add; //Увеличение размера массива. Перегруженный оператор +int
 
        again:
        cout << "Заполнение. С начала[b] или продолжать[c] : ";
        cin >> way;
        if (way == 'c')  { cout << "Продолжение: ";     mass.Set_to(); }
        else if (way == 'b') { cout << "С начала: ";        cin >> mass;   }
        else goto again;
 
        cout << "Обновленный массив: " << mass           << endl;
        cout << "Размер: "          << mass.View("size")     << endl;
        cout << "Сколько добавили: "   << mass.View("how_add") << endl;
        cout << "Continue? [y/n]: ";      cin >> choice;
        if (choice == 'y') continue;
        else break;
    }
    system("pause");
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru