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

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

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

Показать сообщение отдельно
CyBOSSeR
Эксперт C++
2300 / 1670 / 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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru