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

Перегрузка операторов, если класс содержит массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выравнивание текста пробелами по ширине. http://www.cyberforum.ru/cpp-beginners/thread1180950.html
Очень нужно написать решение на C++. Кто-нибудь может помочь? Я пытался 2 дня - ничего не получается :( Задача Вашей программе дается абзац текста. Этот текст состоит из ряда слов, отделенных друг от друга пробелами и/или символами новой строки (символы табуляции не применяются). Слово может содержать знаки пунктуации. Текст завершается специальным словом "$$$", которое будет единственным...
C++ Вычислить сумму ряда 4. 4.3. Написать программу, позволяющую вычислить с помощью цикла: 2+4+6+…+2n, где n задается с клавиатуры. http://www.cyberforum.ru/cpp-beginners/thread1180947.html
C++ Написать программу, проверяющую, поместится ли круг в квадрат или наоборот.
3. Заданы круг площади S и квадрат площади Р. Написать программу, проверяющую, поместится ли круг в квадрат или поместится ли квадрат в круг, или они не поместятся друг в друга.
C++ Написать программу, которая по номеру квартиры определяет номер подъезда и этажа, на котором находится квартир
2. В N-этажном доме M подъездов. На каждой лестничной площадке К квартир. Нумерация квартир в доме сквозная, начиная с 1. Написать программу, которая по номеру квартиры определяет номер подъезда и этажа, на котором находится квартира.
C++ Переполнение буфера http://www.cyberforum.ru/cpp-beginners/thread1180934.html
Не могу найти, где у меня ошибка, выдает переполнение буфера, подскажите пожалуйста. Здесь реализуется связный список #include <iostream> #include <conio.h> #include <ctime> #include <stdio.h> #include <iomanip> using namespace std;
C++ Сформировать из считаных из файла чисел матрицу, содержащую 4 столбца Привет всем, помогите исправить код для программы. Задание. В каждом из заданий исходный файл формировать программно. Количество элементов исходного файла неизвестно. Методические рекомендации. Целесообразно для создания бинарного файла создать отдельную программу. Числа могут вводиться либо пользователем, либо счетчиком случайных чисел. Количество чисел в файле задавать случайным образом,... подробнее

Показать сообщение отдельно
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
19.05.2014, 21:51  [ТС]     Перегрузка операторов, если класс содержит массив
zss, Это наследование часть задания, не более.)

Добавлено через 4 часа 28 минут
zss, BRcr, Я признателен за вашу помощь, в частности за то, что предложил ZSS, но все-таки хотел бы просто доработать свой изначальный вариант.
Вроде перегрузил остальные операторы как сказал BRcr, но как мне теперь сделать так, чтобы в функции count я мог обращаться просто к а, а не к a.mas?

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
// laba2oop.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
#pragma warning(disable : 4996)
int n;
 
class delivery {
public:     
   int *mas = new int[n]; 
   // перегружаем операторы
   delivery operator+(delivery &t);
   delivery operator=(delivery &t);
   bool operator==(delivery &t);
   bool operator>(delivery &t);
   bool operator!=(delivery &t);
};
 
delivery delivery::operator+(delivery &t)
{
    delivery temp; 
    for (int i = 0; i < n; i++) temp.mas[i] = mas[i] + t.mas[i];
    return temp;
}
delivery delivery::operator=(delivery &t)
{
    for (int i = 0; i < n; i++) mas[i] = t.mas[i];
    return *this;
}
bool delivery::operator==(delivery& t)
{
    for (int i = 0; i < n; i++)
    return this->mas[i] == t.mas[i];
}
bool delivery::operator>(delivery& t)
{
    for (int i = 0; i < n; i++)
        return this->mas[i] >t.mas[i];
}
bool delivery::operator!=(delivery& t)
{
    for (int i = 0; i < n; i++)
        return this->mas[i] != t.mas[i];
}
 
class keyboarddelivery : public delivery
{
public:
    void enterarray() {
        for (int i = 0; i < n; i++)  cin >> mas[i]; 
    }
};
 
class readdeliver : public delivery
{
    void read()
    {
        int i = 0;
        FILE *f1;
        f1 = fopen("array.txt", "r");
        if (!f1) cout << "file not opened";
        while (!EOF) { fscanf(f1, "%d", &mas[i]); i++; }
       fclose(f1);
    }
};
 
 
class account {              // считает частоту данных в массиве   
    int **mas2 = new int*[2]; 
    
public:
    void count(keyboarddelivery &a)  // здесь метод счета
       { 
        for (int count = 0; count < n; count++)
            mas2[count] = new int[n]; // и n столбцов   
    
 
            for (int j = 0; j < n; j++)
            {
                mas2[j][0] = a.mas[j];
                mas2[j][1] = 1;
            }   
 
// сортируем массив, счетчик изначально равен Н, 
        for (int i = n-1 ; i >= 0; i--)
        {
            for (int j = 0; j < i; j++)
            {
                if (a.mas[j] > a.mas[j + 1])
                {
                    int tmp = a.mas[j];
                    a.mas[j] = a.mas[j + 1];
                    a.mas[j + 1] = tmp;
                }
            }
        }
        for (int i = 0; i < n; i++)  // счетчик работает.
        {
            for (int j = 0; j < n; j++)
            {
                if ((a.mas[i] == a.mas[j]) && (i != j))
                    mas2[i][1] = mas2[i][1] + 1;
            }
        }
    // счетчик
     // исправно
            // вывод неповторяющихся элементов
            for (int j = 0; j < n; j++) {
                if (a.mas[j] != a.mas[j + 1])
                    cout << a.mas[j];
                if (j == n)
                    cout << a.mas[j];
            }
            cout << endl;
            // вывод счетчиков элементов,
            for (int j = 0; j < n; j++) {
                if (a.mas[j] != a.mas[j + 1])
                    cout << mas2[j][1];
                if (j == n )
                 cout << mas2[j][1];    
            }
 
             cout << endl;       
        for (int i = 0; i<2; i++)
            delete[] mas2[i];
    
 
 
       }
    void count(readdeliver &a)
       {
 
 
       }
};
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{   
    cout << "enter number of digits in array";
    cin >> n;
    keyboarddelivery Z;
    Z.enterarray();
    account AC;
    AC.count(Z);
    return 0;
}
 
Текущее время: 12:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru