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

Создание матричной алгебры, что можно улучшить в коде? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти непрерывную последовательность положительных чисел, сумма элементов которой максимальна http://www.cyberforum.ru/cpp-beginners/thread278968.html
Знайти таку нерозривну послыдовнысть позитивних чисел сума елементыв якый максимальна
C++ Заполнить матрицу линейной последовательностью от левого верхнего угла по диагонали вправо вверх Заполнить матрицу линейной последовательностью от левого верхнего угла по диагонали вправо -вверх http://www.cyberforum.ru/cpp-beginners/thread278965.html
Изменение окна... C++
Вообщем мне надо чтобыпрограмма какимто образом меняла свое диалоговое окно например при нажатии на кнопку менялся размер окна или изчезали и появлялись какие либо элементы....
C++ Деструктор
Доброго времени суток, есть некоторый класс и 2 функции подобны тем, что описаны ниже. В первой объявляется данный класс, обрабатывается и после передается во вторую функцию class myclass {...
C++ Вывод слов с тремя или более гласными http://www.cyberforum.ru/cpp-beginners/thread278930.html
#include <cstdlib> #include <iostream> #include <string> using namespace std; int main(int argc, char *argv) { int s=0, g=0; string st;
C++ Программирование алгоритмов циклической структуры Найти сумму целых положительных чисел, больших 30 и меньших100, кратных трём и оканчивающихся на 2, 4 или 8. подробнее

Показать сообщение отдельно
marphey
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 11
21.04.2011, 12:00  [ТС]
Спасибо всем, кто откликнулся, сам разобрался
1. для полноты матричной алгебры:
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
// унарный плюс
Array Array::operator+() const {
    Array T(*this);
  for (int i = 0; i < VSize; i++)
    for (int j=0; j < HSize; j++)
      T.p[i][j] = +p[i][j];
  return T;
}
 
// равно
bool Array::operator==(const Array& Data) const {
  for (int i = 0; i < VSize; i++)
    for (int j=0; j < HSize; j++)
      if (Data.p[i][j] != p[i][j])
    return false;
  return true;
}
 
// не равно
bool Array::operator!=(const Array& Data) const {
  for (int i = 0; i < VSize; i++)
    for (int j=0; j < HSize; j++)
      if (Data.p[i][j] != p[i][j])
    return true;
  return false;
}
2. для предотвращения прямого доступа к размерам матрицы перенесем их в приватную область класса и напишем функции, возвращающие их значение:
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
class Array {
  int **p;
  unsigned char HSize, VSize;
public:
  unsigned char GetHSize() const;
  unsigned char GetVSize() const;
  Array(unsigned char, unsigned char);
  Array(const Array&);
  int* operator[](unsigned char) const;
  Array& operator=(const Array&);
  Array& operator=(int*);
  Array& operator+=(const Array&);
  Array operator+(Array) const;
  Array operator-() const;
  Array operator+() const;
  Array operator-(Array) const;
  Array operator*(const Array&) const;
  Array operator*(int) const;
  bool operator==(const Array&) const;
  bool operator!=(const Array&) const;
  friend Array operator*(int, Array);
  ~Array();
};
 
unsigned char Array::GetHSize() const {
  return HSize;
}
 
unsigned char Array::GetVSize() const {
  return VSize;
}
3. переопределить [][] для обращения напрямую к элементу матрицы:

с этим я не разобрался, так что если кто-то все еще читает эту тему, помогите с решением проблемы
пысы: как вариант возможно переопределение ()()

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