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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
#1

Уменьшение значений элементов матрицы(перегрузка операции "--") - C++

29.06.2009, 15:08. Просмотров 1417. Ответов 15
Метки нет (Все метки)

Задача

Перегрузите операцию "--" позволяющую уменьшать переменную типа матрица на 1. В результате каждылемент матрицы должен уменьшаться на 1.

Хм, можете ли написать мне код готовой программы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2009, 15:08     Уменьшение значений элементов матрицы(перегрузка операции "--")
Посмотрите здесь:

Перегрузка операции "*" для умножения одномерных массивов - C++
Нужна помощь. Есть условие задачи: Выполните перегрузку операции "*" для умножения одномерных массивов. Заранее спасибо.

Перегрузка внешней функции операции "operator=" - C++
1) Возможна ли перегрузка внешней функцией операции "operator="? Чтобы скажем выполнить нечто: int = объект 2) Компилятор (mingw)...

Перегрузка операции "%=" глобальной фунцкцией - C++
Здравствуйте, я тут, решая задачу на перегрузку оператора при помощи глобальной функции наткнулся на такую проблему: Есть класс op, в нем...

Конструктор копирования и перегрузка операции "=" - C++
Привет всем, я не понимаю для чего конструктор копирования и перегрузку операции присваивания необходимо использовать в паре, Не пойму в...

Классы: перегрузка операции "Бинарный +" - C++
Помогите пожалуйста реализовать перегрузку операции бинарный+:добавляет к значению поля amount значения скаляра #include <iostream> ...

Перегрузка операции "<=" - C++
Здравствуйте, есть 2 класса: MEllipse и CTriangle, они наследники абстрактного класса CGraphicsObject. Допустим, в main создаётся по...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
29.06.2009, 18:18     Уменьшение значений элементов матрицы(перегрузка операции "--") #2
Возможно, ты лучше спросишь, что тебе в этой задаче не понятно?
Так ты быстрее получишь ответ.
E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
29.06.2009, 21:06  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #3
Каким образом задается перегрузка, и как применить её к операции "--"
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
29.06.2009, 21:15     Уменьшение значений элементов матрицы(перегрузка операции "--") #4
Цитата Сообщение от E@gle Посмотреть сообщение
Каким образом задается перегрузка, и как применить её к операции "--"
http://www.java2s.com/Code/Cpp/Overl...adoperator.htm
тут пример, надеюсь разберетесь
E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
29.06.2009, 21:31  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #5
хорошо, а как используя это, понизить каждый элемент массива в матрице?
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
29.06.2009, 21:35     Уменьшение значений элементов матрицы(перегрузка операции "--") #6
в перегрузку чтото вроде этого поместить
C++
1
2
3
4
//матрица a размерности m на n
for(i=0;i<n;i++)
   for(j=0;j<m;j++)
       a[i][j]--;

Не по теме:

прочтение хотя бы пары глав, даже выдернутых из остального текста кнгиги, по данной теме, решило бы все ваши проблемы, связанные с этой задачей, потому как она стандартная и разбирается во многих книгах, ИМХО

E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
30.06.2009, 21:03  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #7
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
include <iostream>
#include <conio.h>
using namespace std;
 
class array {
int nums[10];
public:
array();
void set(int n[10]);
void show();
array operator++();
friend array operator--(array &ob);
};
 
array::array()
{
int i;
 
for(i = 0; i <10; i++) 
nums[ i ] = 0;
} 
 
void array::set(int *n)
{
int i;
 
for(i = 0; i <10; i++) 
nums[ i ] = n[ i ];
}
 
void array::show()
{
int i;
 
for(i = 0; i <10; i++) 
cout << nums[ i ] << ' ';
 
cout << endl;
}
 
// Overload unary op using member function.
array array::operator++()
{
int i;
 
for(i = 0; i <10; i++) 
nums[ i ]++;
 
return *this;
}
 
// Use a friend.
array operator--(array &ob)
{
int i;
 
for(i = 0; i <10; i++) 
ob.nums[ i ]--;
 
return ob;
}
 
int main()
{
array object1, object2, object3;
 
int i[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 
object1.set(i);
object2.set(i);
 
object3 = ++object1;
object3.show();
 
object3 = --object1;
object3.show();
 
return 0;
getch();
}
Не пойму почему экран не удерживается
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
30.06.2009, 22:06     Уменьшение значений элементов матрицы(перегрузка операции "--") #8
Цитата Сообщение от E@gle Посмотреть сообщение
return 0;
getch();
здесь ошибка

Добавлено через 52 секунды
p.s: вы хоть понимаете что означает return 0; ?
E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
01.07.2009, 21:02  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #9
Я не очень понимаю что делается в этой программе, первое кажется задается какой то array далее ему присваивают значение array() далее используется цикл непонятно мне для чего, как и следующий цикл, далее кажется вывод значений элементов задаваемых в цикле выше, следующие два цикла кажется перегрузка, и наконец return 0, - полагаю для возвращения через 0 секунд, наверно поэтому getch и не работает,

Вообще я до этого работал только не много на паскале, и смутно понимаю что здесь что, как и для чего return

Добавлено через 3 часа 58 минут 48 секунд
Так, эта программа работает перегружает операцию "--", как переписать код так чтоб вместо строчки из десяти цифр она понижала значения каждого элемента матрицы, а размеры матрицы , как и ее элементы задавались с клавиатуры?

Добавлено через 1 минуту 54 секунды
Ээ . . . она работает если убрать return 0;
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
01.07.2009, 21:23     Уменьшение значений элементов матрицы(перегрузка операции "--") #10
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
#include <iostream>
 
class array{
public:
    array(){
        for(int i = 0; i < 10; ++i)
            data[i] = i + 10;
    }
    array &operator --(){
        for(int i = 0; i < 10; ++i)
            --data[i];
        return *this;
    }
    friend std::ostream &operator << (std::ostream &lhs, const array &rhs){
        for(int i = 0; i < 10; ++i)
            lhs << rhs.data[i] << " ";
        return lhs;
    }
private:
    int data[10]; //допустим десять
};
 
int main(){
    array arr;
    std::cout << arr << '\n';
    --arr;
    std::cout << arr;
    return 0;
}
после return идет немедленый выход с функции.
Цитата Сообщение от E@gle Посмотреть сообщение
Ээ . . . она работает если убрать return 0;
На предупреждение компилятора посмотри.

как и ее элементы задавались с клавиатуры?
C++
1
2
3
4
5
friend std::istream &operator >>(std::istream &lhs, array &rhs){
        for(int i = 0; i < 10; ++i)
            lhs >> rhs.data[i];
        return lhs;
    }

Не по теме:

Цитата Сообщение от Monte-Cristo
На заработках
ну и как?.

E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
02.07.2009, 09:36  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #11
Не вижу особой разницы,в предыдущем примере понижались значения строки из 10 цифр на один, здесь просто другие цифры, как переделать код так чтобы была не сторка , а матрица(двумерный динамический массив), ее размеры задавалиь с клавиатуры, как и значение ее элементов
E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
05.07.2009, 20:56  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #12
Кто нибудь может помочь? Мне бы скорее буду признателен.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
06.07.2009, 01:03     Уменьшение значений элементов матрицы(перегрузка операции "--") #13
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
#include <iostream>
 
template<typename T>
class array{
public:
    array():data(0),row(0), col(0){
    }
    array(const array &rhs):data(0),row(0),col(0){
        *this = rhs;
    }
    array(int _row, int _col):data(0),row(0),col(0){
        set_size(_row, _col);
    }
    ~array(){
        if(data) arrFree(data,row);
    }
    array &operator = (const array &rhs){
        set_size(rhs.row, rhs.col);
        for(int i = 0; i < row; ++i)
            for(int j = 0; j < col; ++j)
                data[i][j] = rhs.data[i][j];
        return *this;
    }
 
    void set_size(int _row, int _col){
        if(data) arrFree(data, row);
        data = arrCreate(_row, _col);
        row = _row;
        col = _col;
    }
    array &operator --(){
        for(int i = 0; i < row; ++i)
            for(int j = 0; j < col; ++j)
                --data[i][j];
        return *this;
    }
 
    friend std::ostream &operator << (std::ostream &lhs, const array &rhs){
        for(int i = 0; i < rhs.row; ++i){
            lhs << "[ ";
            for(int j = 0; j < rhs.col; ++j)
                lhs << rhs.data[i][j] << " ";
            lhs << "]" << '\n';
        }
        return lhs;
    }
 
    friend std::istream &operator >> (std::istream &lhs, array &rhs){
 
        for(int i = 0; i < rhs.row; ++i)
            for(int j = 0; j < rhs.col; ++j){
                std::cout << "arr[" << i << "]" << "[" << j << "] = ";
                lhs >> rhs.data[i][j];
            }
        return lhs;
    }
private:
    T **arrCreate(const int _row,const int _col){
        T **arr = new T*[_row];
        for(int i = 0; i < _row; ++i)
            arr[i] = new T[_col];
        return arr;
    }
    void arrFree(T **arr, int _row){
        for(int i = 0; i < _row; ++i)
            delete[] arr[i];
        delete[] arr;
        arr = 0;
    }
 
    T **data;
    int row;
    int col;
};
 
int main(){
    array<int> arr(2,2);
    std::cin >> arr;
    std::cout << arr << '\n';
    --arr;
    std::cout << arr << '\n';
    array<int> ar;
    ar = arr;
    --ar;
    std::cout << ar  << '\n';
    std::cout << arr << '\n';
 
    ar.set_size(3,3);
    std::cin >> ar;
    std::cout << ar << '\n';
    return 0;
}
так пойдет?
E@gle
0 / 0 / 0
Регистрация: 20.06.2009
Сообщений: 20
06.07.2009, 01:59  [ТС]     Уменьшение значений элементов матрицы(перегрузка операции "--") #14
Гхм . . . А как к ней выглядит блок схема?

Добавлено через 22 минуты 29 секунд
Она как то не так работает, отнимает два раза по единице, и третий раз добавляет единицу, потом еще раз предлагает перенабрать значение элементов, и не сдерживая экран выходит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2009, 10:51     Уменьшение значений элементов матрицы(перегрузка операции "--")
Еще ссылки по теме:

Перегрузка операции "++" - C++
Подскажите пожалуйста! Необходимо создать переменную место нахождения и её значения : на складе, в торговом зале, на витрине. Далее...

Перегрузка операции "-" - C++
Допустим есть строка: string s1 = &quot;123ab5&quot;; // string - класс Нужно сделать, чтобы после string s2 = s1-3; // число может быть любым...

Перегрузка операции "=" - C++
Вот код, который содержит перегруженную операцию «=», использование которой скопирует S1 в S2 . String&amp; String::operator=(String &amp;ob) {...

Динамическое программирование, задача "Уменьшение числа" - C++
Имеется натуральное число N (1 &lt;= N &lt;= 106). За один ход с ним можно произвести следующие действия: Вычесть единицу Разделить на два ...


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

Или воспользуйтесь поиском по форуму:
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
06.07.2009, 10:51     Уменьшение значений элементов матрицы(перегрузка операции "--") #15
Цитата Сообщение от E@gle Посмотреть сообщение
Она как то не так работает, отнимает два раза по единице, и третий раз добавляет единицу, потом еще раз предлагает перенабрать значение элементов
Все там правильно работает. Внимательнее код читай.
Цитата Сообщение от E@gle Посмотреть сообщение
не сдерживая экран выходит
Перед
C++
1
return 0;
напиши
C++
1
system("pause");
Цитата Сообщение от E@gle Посмотреть сообщение
Гхм . . . А как к ней выглядит блок схема?
Проанализируй код и сам составь блок-схему (я это делать точно не буду).
Yandex
Объявления
06.07.2009, 10:51     Уменьшение значений элементов матрицы(перегрузка операции "--")
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru