Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнение массива Привет народ! Очень нужна помощь срочно!(( Вот такое вот задание: 1,Составьте программу заполнения массива А(N,N) нулями и единицами в шахматном порядке 2.Составьте программу вычисления суммы элементов массива А(М,N), лежащего вне интервала (P,T) 3. Составьте программу подсчета положительных и отрицательных элементов строк массива А(M,N) либо вот такое: Написать функцию ,которая любое... https://www.cyberforum.ru/ cpp-beginners/ thread135522.html Можно ли посмотреть что в exe файле??? C++
У меня есть только exe файл с программой на с++, можно как то просмотреть саму программу(текст)??
C++ Дан массив из N Дан массив из N чисел (8<N<12). Вычислить сумму элементов с нечет-ными индексами и их среднее арифметические значение. помогите с заданием, очень прошу) https://www.cyberforum.ru/ cpp-beginners/ thread135496.html C++ функция в матрице https://www.cyberforum.ru/ cpp-beginners/ thread135491.html
ааа,еще один вопрос по функциям...чет никак я с ними... Используя функцию нахождения совпадающих элементов в матрице,найти максимальное из чисел,встречающихся в заданной матрице(n на n) более одного раза. Заранее спасибо.
C++ Графика
setcolor(green); line(50,50,50,500); line(50,50,700,50); line(700,50,700,500); line(50,500,700,500); for(i=1;i<=4;i++) { setcolor(white); circle(100,125,5); delay(1000);
C++ Вычисление непрерывных дробей и выражений. Вычисление полиномов и их производных. https://www.cyberforum.ru/ cpp-beginners/ thread135447.html
1. Чему равна знакочередующаяся сумма цифр числа n. 2. Даны натуральное число n и вещественное число х. Составить программу для вычисления: y=sinx+sinx sinx+sin sin sinx+...sin sin sin...sinx. 3. Найти наибольшее и наименьшее значения функции в заданном интервале с заданным шагом: y=(x+1)/(3*(x*x)+2) ...
C++ С++. Решение программ для начинающих програмистов мне на днях сдавать работу,а я не знаю как сделать...помогите пожалуйста!!! сделать матрицу,каждый элемент которой представляет собой дробную часть соответствующего элемента заданой матрицы A(n, m). https://www.cyberforum.ru/ cpp-beginners/ thread135446.html C++ С++ Цикли
Виручайте плизззз( 1) Составить программу вычисления суммы и добутку.http://img687.imageshack.us/img687/2471/97575238.png 2) Составить программу вычисления значения функции на интервале, на котором она установлена, с заданным шагом изменения аргумента, используя вложенные цикли.http://img522.imageshack.us/img522/1913/76388846.png 3) Составить программу нахождения приближенного значения...
C++ Чтение с текстового файла getline()-ом https://www.cyberforum.ru/ cpp-beginners/ thread135427.html
Приветствую Всех! У меня возникла проблема с getline() Я должен прочитать из текстового файла строки по порядку в цикле while(!we.eof()){} И программа почему-то не видит что файл закончился и заходит в цикл на один раз больше, вследствии чего выписывает мусор в переменных ) Помогите разобратся, я в C++ новичок , нас учили читать строки гетлайном) Вот кодwhile(!we.eof()) { ...
C++ Таблица Пифагора через динамические масивы https://www.cyberforum.ru/ cpp-beginners/ thread135423.html
НЕ могу понять динамические масивы. Объясните как этот код работает. Вот пишу пример с книги. // таблица Пифагора #include <stdio.h> #include <conio.h> int main() { int i, j; // 1. создание
C++ Запись информации в документ и счение егою
#include <iostream> #include <conio> #include <iomanip> #include <fstream> using namespace std; const int n=3; struct TDarbin {char imja; int vozrast; int deti;}; fstream f; void iev(TDarbin Darbin)
C++ Файл-архив Всем доброго времени суток! В общем на днях задали пару задачек на файл-архив. Вот: 1) Дана строка S и файл-архив целых чисел, содержащий данные из не¬скольких (не более шести) файлов в формате: в первом элементе файла-архива хранится число N, в следующих N элементах хранится размер (число элементов) каждого из исходных файлов, а затем последовательно размещаются данные из каждого исходного... https://www.cyberforum.ru/ cpp-beginners/ thread135398.html
анимешник++
95 / 62 / 7
Регистрация: 03.11.2009
Сообщений: 427
27.05.2010, 10:31  [ТС] 0

перегрузка оператора + - C++ - Ответ 757472

27.05.2010, 10:31. Показов 1594. Ответов 7
Метки (Все метки)

Ответ

вообщем пошевелил я древние захоронения мозгов - вроде все привел к нужному ладу, но все-равно осталась одна нерешенная задача - см. комментарий в коде внизу (186 строка).
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*(А[(B[3.7])] +( C +(~A)))
M[К] - возвращается сумма элементов столбцов М, имеющих минимальное значение < К.
~М - элементы столбцов переставить в обратном порядке, если первый элемент >0, в противном случае отсортировать по убыванию. 
М3=М1+М2 // M3[i,j] = M2[i,j] + M1[i,j], для элементов, расположенных по периметру матриц. Остальные элементы равны соответствующим элементам М2.*/
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <windows.h>
#include <time.h>
using namespace std;
 
class Matrix
{
    protected:
        float *matr;
        int n,m;
        friend ostream& operator<<(ostream& o, Matrix& a);
    public:
        Matrix(int n, int m);
        ~Matrix() {delete[] matr; cout<<"matrix kill"<<endl;}
        Matrix(Matrix &a);
        Matrix& operator=(Matrix& a);
        Matrix& operator~();
        Matrix& operator+(Matrix &a);
        float operator[](float K);
        int _n() {return n;}
        int _m() {return m;}
        float _matr(int i, int j) {return *(matr+i*n+j);}
        void matr_(int i, int j, float el) {if((i>=0&&i<n)&&(j>=0&&j<m)) *(matr+i*n+j)=el;}
        friend void form(Matrix &a);
        friend Matrix operator+(float l, Matrix &a);
};
 
    Matrix::Matrix(int n, int m)
    {
        int i,a;
        cout<<"matrix done"<<endl;
        this->n=n;
        this->m=m;
        matr=new float[n*m];
        for(i=0;i<n;i++)
        for(a=0;a<m;a++)
        matr_(i,a,(-50+100.*rand()/(RAND_MAX+1)));
    }
    
    Matrix::Matrix(Matrix &a)
    {
        n=a.n;
        m=a.m;
        matr=new float[n*m];
        for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        matr_(i,j,a._matr(i,j));
        cout<<"matrix copy"<<endl;
    }
    
    Matrix& Matrix::operator=(Matrix& a)
    {
        if(this!=&a)
        {
            n=a.n;
            m=a.m;
            if(matr!=NULL) delete[] matr;
            matr=new float[n*m];
            for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            matr_(i,j,a._matr(i,j));
        }
        return *this;
    }
    
    float Matrix::operator[](float K)
    {
        float ret=0;
        for(int i=0;i<n;i++)
        {
            float min_t=32000;
            for(int j=0;j<m;j++)
            {
                if(_matr(j,i)<min_t) min_t=_matr(j,i);
            }
            if(min_t<K) for(int j=0;j<m;j++) ret+=_matr(j,i);
        }
        return ret;
    }
 
    Matrix& Matrix::operator~()
    {
        float tmp;
        int i,a,k;
        if(_matr(0,0)>0)
        {
            for(a=0;a<m;a++)
            {
                for(i=0;i<(int)(n/2);i++)
                {
                    tmp=_matr(i,a);
                    matr_(i,a,_matr(n-i-1,a));
                    matr_(n-i-1,a,tmp);
                }
            }
        }
        else
        {
            for(a=0;a<m;a++)
            {
                for(i=0;i<n-1;i++)
                {
                    for(k=i+1;k<n;k++)
                    {
                        if(_matr(i,a)<_matr(k,a))
                        {
                            tmp=_matr(i,a);
                            matr_(i,a,_matr(k,a));
                            matr_(k,a,tmp);
                        }
                    }
                }
            }
        }
        return *this;
    }
 
    Matrix& Matrix::operator+(Matrix &a)
    {
        int i,j;
        int m_m=_m()<a._m()?_m():a._m();
        int m_n=_n()<a._n()?_n():a._n();
        for(i=0;i<m_m;i++) 
        a.matr_(0,i,a._matr(0,i)+_matr(0,i));
        for(i=1;i<m_n;i++)
        a.matr_(i,m_m-1,a._matr(i,m_m-1)+_matr(i,m_m-1));
        for(i=m_m-2;i>=0;i--)
        a.matr_(m_n-1,i,a._matr(m_n-1,i)+_matr(m_n-1,i));
        for(i=m_n-2;i>0;i--)
        a.matr_(i,0,a._matr(i,0)+_matr(i,0));
        return a;
    }
 
void form(Matrix &a)
{
    for(int i=0;i<a._n();i++)
    for(int j=0;j<a._m();j++)
    a.matr_(i,j,100.*rand()/(RAND_MAX+1));
}
 
Matrix operator+(float l, Matrix &a)
{
    Matrix res(a);
    for(int i=0;i<a._n();i++)
    for(int j=0;j<a._m();j++)
    res.matr_(i,j,res._matr(i,j)+l);
    return res;
}
 
ostream& operator<<(ostream& o, Matrix& a)
{
    for(int i=0;i<a.n;i++)
    {
        for(int j=0;j<a.m;j++)
        o<<setw(9)<<setprecision(4)<<a._matr(i,j);
        o<<endl;
    }
    return o;
}
 
int main()
{
    srand((unsigned) time(NULL));
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Matrix A(5,5);
    Matrix B(5,5);
    Matrix C(5,5);
    cout<<"Matrix A:"<<endl;
    cout<<A;
    cout<<"----------------------------------------------------------------------"<<endl;
    cout<<"Matrix B:"<<endl;
    cout<<B;
    cout<<"----------------------------------------------------------------------"<<endl;
    cout<<"Matrix C:"<<endl;
    cout<<C;
    cout<<"----------------------------------------------------------------------"<<endl;
    cout<<"B[3.7]="<<B[3.7]<<endl<<"A[(B[3.7])]="<<A[(B[3.7])]<<endl;
    cout<<"Matrix ~A:"<<endl;
    cout<<(~A); //операция выполняется нормально, но при присваивание другой матрицы этой (например B=(~A)) в матрицу В копируется матрица А, а не ~A
    cout<<"----------------------------------------------------------------------"<<endl;
    cout<<"Matrix C+(~A):"<<endl;
    cout<<(C+(~A));
    cout<<"----------------------------------------------------------------------"<<endl;
    getch();
    return 0;
}
помогите с этим делом. Операция ~должна возвращать объект, дабы учавствовать в других операциях, а т.к. она возвращает саму себя - то и выходит, что не может быть 2 объекта с одинаковым адресом. Печатается нормально ~A, а вот в присваивоение участвует А......

Вернуться к обсуждению:
перегрузка оператора + C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2010, 10:31
Готовые ответы и решения:

Перегрузка оператора ==
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не получается Вот...

Перегрузка оператора ^
Здравствуйте! Необходимо перегрузить бинарный оператор ^ для транспонирования матрицы. Есть класс...

Перегрузка оператора +
Написал для перегрузки оператора + class BoolMatrix { private: int feet; public:...

перегрузка оператора!
Помогите сложить диагонали , при помоши перегрузки оператора+, чтобы можно было написать в maine:...

7
27.05.2010, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2010, 10:31
Помогаю со студенческими работами здесь

Перегрузка оператора +
Добрый день)Почему то не работает перегрузка оператора сложения) #include &lt;iostream&gt; #include...

Перегрузка оператора +
не получается в своем классе перегрузить оператор + :( пишет &quot;error C2804: бинарный &quot;operator +&quot;...

Перегрузка оператора
Имеется код: #include &lt;iostream&gt; class X { public: int a; int b; int operator+(int a)...

Перегрузка оператора >
Добрый день! #include &lt;stdio.h&gt; #include &lt;tchar.h&gt; #include &lt;iostream&gt; template &lt;typename...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru