uzupelnic klase macierz o metoda wyznaczajaca nowa macierz poprzez zamiane miejscami wskazanych kolumn. utworzyc metoda typu macierz(o nazwie zamienK) i typu void(o nazwie zamioen K2)
macierz A= new macierz(4,5);
...
macierz B=A.zamienK(2,3); //utworzona macierz B bedzie rowna macierzy A z zamieniona kolumna 2 z 3.
...
B.zamienK2(3,4); // w macierzy B zamieniona bedzie kolumna 3 z 4

klase Main uzupelnic o polecenia testujace poprawnosc dzialania zdefiniowanycch metod.

#include <cstdlib>
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;

class MATRIX{
protected: int rows, columns; float **A; //zmienna jest adresem wskazujacym na zmienna w ktorej jest wskaznik
public:
MATRIX(int, int); //konstruktor
MATRIX (const MATRIX &);
~MATRIX(); //destruktor
float get(int, int); //prototyp
void set(int, int, float);
void set(float);
void print();
int getrows() {return rows;}
int getcolumns() {return columns;}
};
MATRIX::MATRIX(int a, int b){ //gdy metoda jest konstruktorem musi sie nazywac jak klasa
rows=a; columns=b;
if(rows<1) rows=1; if(columns<1) columns=1;
A=new float *[rows]; //zamiast malloc jest new
for(int i=0;i<rows;i++) A[i]=new float[columns];
set(0);
}

MATRIX::MATRIX(const MATRIX &m)
{
rows=m.rows;
columns=m.columns;
A=new float *[rows];
for(int i=0;i<rows;i++) A[i]=new float[columns];
for(int i=0;i<rows;i++)
for(int j=0;j<columns;j++)
this->A[i][j]=m.A[i][j];
}

MATRIX::~MATRIX(){
for(int i=0;i<rows;i++) delete[] A[i];
delete[] A;
}
void MATRIX::set(float a){
for(int j=0;j<columns;j++)
for(int i=0;i<rows;i++)
A[i][j]=a;
}
void MATRIX::set(int w, int k, float a){
if(w<1||w>rows||k<1||k>columns){ cout << "przekroczony zakres!!!\n"; abort(); }
A[w-1][k-1]=a;
}
float MATRIX::get(int w, int k){
if(w<1||w>rows||k<1||k>columns){ cout << "przekroczony zakres!!!\n"; abort(); }
return A[w-1][k-1];
}
void MATRIX::print(){
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++)
cout << A[i][j] << "\t";
cout << "\n";
}
cout << "\n";
}

class matrix :public MATRIX
{
public: matrix(int a, int b) :MATRIX(a,b) {}
matrix (const matrix& m) :MATRIX(m) {}
matrix operator+(float);
void operator=(const matrix);
};

matrix matrix::operator+(float a)
{
matrix wynik(rows,columns);
for(int i=0;i<rows;i++)
for(int j=0;j<columns;j++)
wynik.A[i][j]=A[i][j]+a;
return wynik;
}

int main(){
matrix M1(3,4);
M1.set(-8);
float a=10;
matrix M2=(M1+a);
(M2+2).print();
M1.print(); M2.print();
system("pause"); return 0;
}