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

Класс "Матрица": конструктор, деструктор и перегрузка операторов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить и представить в виде таблицы значения функции Z http://www.cyberforum.ru/cpp-beginners/thread413012.html
Ребят помогите пожалуйста решить задачку:
C++ Алгоритм сортировка деревом Напишите пожалуйста алгоритм сортировки деревом. Спасибо. http://www.cyberforum.ru/cpp-beginners/thread413009.html
C++ Чтение файлов
Доброго времени суток! Хочу спросить у знающих людей такой вопрос! По поводу чтения файлов. У меня есть несколько таких файлов: test1.dat, test2.dat, test3.dat,.... и т.д. я бы хотел реализовать...
Помоги написать программу для сложение чисел в 15ричной системе счисления C++
Я только начал заниматься Си++ и не могу написать программу для сложение и вычитания чисел в пятнацатиричной системе, пробовал написать и вот, что получилось, мож кто подскажет, что нужно исправить...
C++ Предусмотреть в программе просмотр бинарного файла и выполнить его обработку http://www.cyberforum.ru/cpp-beginners/thread412996.html
Имеется информация о телевизорах на складе: наименование, фирма изготовитель, стоимость, размер экрана, количество на складе. Для описания информации о телевизорах на складе в про-грамме необходимо...
C++ Подпрограмма умножения 2 матриц #include<iostream.h> const int N=20;const int M=25; double m,l,n; void d(double x,double y,double z) void main () { int i,j; for(i=0;i<N;i++) for(j=0;j<M;j++) { c=0; подробнее

Показать сообщение отдельно
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
28.12.2011, 21:00
Цитата Сообщение от greeezz Посмотреть сообщение
потому что в функции есть проверка только на размер либо строк либо колонок
Там проверка только строк. Как вы сможите проверить валидность номера колонки?!

Цитата Сообщение от greeezz Посмотреть сообщение
главный минус в том что в том случае когда обращение к элементу корректное ваша функция вернет ошибку.
где-где??? В LiveWorkSpace вернёт 32:
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
#include <iostream>
using namespace std;
 
class matrix
{
   public:
 
   matrix(int, int, int = 0);
   ~matrix();
 
   float*& operator[](int) const;
 
   void operator*=(matrix& b);
   void operator/=(matrix& b);
 
 
   private:
 
   float **mPtr;
 
   int n;
 
   int m;
};
 
matrix::matrix(int nk, int mk, int init)
{
   //**mPtr = new (float[nk])[mk];
   mPtr = new float*[nk];
   for (int x = 0; x < nk; x++)
      mPtr[x] = new float[6];
 
   n = nk;
 
   m = mk;
 
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
    mPtr[i][j] = init;
}
 
matrix::~matrix ()
{
   delete [] mPtr;
}
 
float*& matrix::operator[](int nk) const
{
   if ((nk > n-1) || (nk < 0))
      cout << "Error: array overflow..." << endl;
   return mPtr[nk];
}
 
 
 
 
 
int main ()
{
   
 
   matrix m(10, 2); //NE KVAdratnYA MATRICA!
 
   m[9][1] = 32;
 
   cout << m[9][1] << endl;   //RABOTAET!
 
   return 0;
}

Здесь смысл прост! Выражение
C++
1
m[9][1] = 32;
сначала преобразуется в
C++
1
<какой-то адрес типа float>[32]
Здесь operator[] вызывается ОДИН РАЗ, воспользуйтесь трассировкой, если не верите!
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru