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

Класс матриц - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значение выражения рекурсивно http://www.cyberforum.ru/cpp-beginners/thread210126.html
Доброго времени суток! Помогите решить подсчитать значение выражения с помощью рекурсии. Вот в картинке сохранил то, что надо посчитать. http://i071.***********/1012/5b/6480de56c930.jpg (если...
C++ Шаблон класса вектор с двумя членами-данными Здравствуйте Уважаемые. Нужна Ваша помощь в реализации программы: Построить шаблон класса Vector. Определите класс Record (запись) с двумя членами-данными: count (количество) и price (цена).... http://www.cyberforum.ru/cpp-beginners/thread210123.html
C++ Алгоритм Флойда - Уоршелла
не получается реализовать алгоритм Флойда-Уоршелла, вроде все должнен выводить, а выводит или нули или вообще ничего, ошибок не выводит не понимаю в чем дело. вот код проги #include "stdafx.h"...
C++ Найти сумму элементов строки матрицы, в которой расположен элемент с наименьшим значением
ребята очень нужна помощь при выводе матрицы.Кто сможет помоч если сможет.Нада MFC AppWizard.exe проект и вот задание Дана действительная матрица размера m*n. Найти сумму элементов строки, в...
C++ Сравнение методов сортировок массивов. Семестровая работа http://www.cyberforum.ru/cpp-beginners/thread210105.html
Пишу семестровую по методам сортировки массивов. В моем варианте метод прямого выбора и метод Шейкера. Надо сравнить количество перестановок для различного числа элементов массива. n = 20,...
C++ При чтении файла последний элемент повторяется дважды появилась необходимость выучить работу с файлами за 9 часов #include <iostream> #include <time.h> #include <stdio.h> #include <stdlib.h> int main() { подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
15.12.2010, 03:03
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
#include <cassert>
#include <cstddef>
 
template<typename T>
class matrix {
  class row {
    friend class matrix;
 
    row(T* first_cell_in_row, std::size_t size);
 
    T*          first_cell_in_row;
    std::size_t size;
 
  public:
          T& operator[] (std::size_t index);
    const T& operator[] (std::size_t index) const;
  };
 
  T*          the_array;
  std::size_t row_count;
  std::size_t col_count;
 
public:
  matrix(std::size_t row_count, std::size_t col_count);
  matrix(const matrix& other);
 
  ~matrix() { delete [] the_array; }
 
  std::size_t rowCount() const { return row_count; }
  std::size_t colCount() const { return col_count; }
 
  matrix& operator= (const matrix& other);
 
        row operator[] (std::size_t index);
  const row operator[] (std::size_t index) const;
};
 
template<typename T>
matrix<T>::row::row(T* first_cell_in_row, std::size_t size)
: first_cell_in_row(first_cell_in_row)
, size             (size) {
}
 
template<typename T>
T& matrix<T>::row::operator[] (std::size_t index) {
  assert(index < size);
 
  return first_cell_in_row[index];
}
 
template<typename T>
const T& matrix<T>::row::operator[] (std::size_t index) const {
  assert(index < size);
 
  return first_cell_in_row[index];
}
 
template<typename T>
matrix<T>::matrix(std::size_t row_count, std::size_t col_count)
: row_count(row_count)
, col_count(col_count)
, the_array(new T[row_count * col_count]){
  for (std::size_t i = 0; i < rowCount() * colCount(); ++i)
    the_array[i] = T();
}
 
template<typename T>
matrix<T>::matrix(const matrix& other)
: row_count(other.rowCount())
, col_count(other.colCount())
, the_array(new T[other.rowCount() * other.colCount()]) {
  for (std::size_t i = 0; i < rowCount() * colCount(); ++i)
    the_array[i] = other.the_array[i];
}
 
template<typename T>
matrix<T>& matrix<T>::operator= (const matrix& other) {
  T* the_new_array = new T[other.rowCount() * other.colCount()];
 
  for (std::size_t i = 0; i < rowCount() * colCount(); ++i)
    the_new_array[i] = other[i];
 
  delete [] the_array;
 
  the_array = the_new_array;
  row_count = other.row_count;
  col_count = other.col_count;
}
 
template<typename T>
typename matrix<T>::row matrix<T>::operator[] (std::size_t index) {
  assert(index < rowCount());
 
  return row(the_array + (colCount() * index), colCount());
}
 
template<typename T>
const typename matrix<T>::row matrix<T>::operator[] (std::size_t index) const {
  assert(index < rowCount());
 
  return row(the_array + (colCount() * index), colCount());
}
 
template<typename T>
const matrix<T> operator+ (const matrix<T>& lhs, const matrix<T>& rhs) {
  assert(lhs.rowCount() == rhs.rowCount() && 
         lhs.colCount() == rhs.colCount());
  
  matrix<T> result(lhs.rowCount(), lhs.colCount());
 
  for (std::size_t i = 0; i < result.rowCount() * result.colCount(); ++i)
        result.the_array[i] = lhs.the_array[i] + rhs.the_array[i];
 
  return result;
}
 
template<typename T>
const matrix<T> operator- (const matrix<T>& lhs, const matrix<T>& rhs) {
  assert(lhs.rowCount() == rhs.rowCount() && 
         lhs.colCount() == rhs.colCount());
  
  matrix<T> result(lhs.rowCount(), lhs.colCount());
 
  for (std::size_t i = 0; i < result.rowCount() * result.colCount(); ++i)
        result.the_array[i] = lhs.the_array[i] - rhs.the_array[i];
 
  return result;
}
 
template<typename T>
const matrix<T> operator* (const matrix<T>& lhs, const matrix<T>& rhs) {
  assert(lhs.colCount() == rhs.rowCount());
  
  matrix<T> result(lhs.rowCount(), rhs.colCount());
 
  for (std::size_t i = 0; i < result.rowCount(); ++i)
    for (std::size_t j = 0; j < result.colCount(); ++j)
      for (std::size_t k = 0; k < lhs.colCount(); ++k)
        result[i][j] += lhs[i][k] * rhs[k][j];
 
  return result;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru