#include <iostream>
#include <time.h>
using namespace std;
class macierz{
static const int DEFAULT = 1;
private:
double **tab; //wskaźniki
int m_height; //wysokość macierzy
int m_width; //szerokość macierzy
public:
macierz(); //konstruktor domyślny
macierz(int height, int width); //kontruktor z wymiarami macierzy
macierz(macierz& mk); //konstruktor kopiujący
double set_test(int i, int j, double x); //setter
double get_test(int i, int j); //getter
void zmien_rozmiar(int h, int w); //zmiana rozmiaru macierzy
};
macierz::macierz(){
m_height = 1;
m_width = 1;
tab = new double*[DEFAULT];
for (int i = 0; i < DEFAULT; ++i )
tab[i] = new double[DEFAULT];
//wpisanie wartości
for (int i = 0; i < m_height; i++)
for (int j = 0; j < m_width; j++)
tab[i][j] = j+1;
//wypisywanie
for (int i = 0; i < m_height; i++){
cout << "\n";
for (int j = 0; j < m_width; j++)
printf("%g ", tab[i][j]);
}
}
macierz::macierz(int height, int width){
m_height = height;
m_width = width;
tab = new double*[m_width];
for (int i = 0; i < m_width; i++)
tab[i] = new double[m_height];
}
macierz::macierz(macierz& mk) {
tab = new double*[mk.m_width];
m_width = mk.m_width;
for (int i = 0; i < mk.m_height; i++){
tab[i] = new double[mk.m_height];
tab[i] = mk.tab[i];
}
cout << "\n";
for (int i = 0; i < mk.m_height; i++){
cout << "\n";
for (int j = 0; j < mk.m_width; j++)
printf("%2g ", tab[i][j]);
}
}
double macierz::set_test(int i, int j, double x){
printf("\nwysokosc = %d", m_height);//tutaj nie widać wartości zmiennej
printf("\nszerokosc = %d", m_width);
if (i >= 0 || i < m_height){
if (j >= 0 || j < m_width){
srand((unsigned int)time(NULL));
//wpisywanie wartości
for (int i = 0; i < m_height; i++)
for (int j = 0; j < m_width; j++)
tab[i][j] = (rand() % 3) - 1;
}
}
//wypisywanie
for (int i = 0; i < m_height; i++){
cout << "\n";
for (int j = 0; j < m_width; j++)
printf("%2g ", tab[i][j]);
}
return 0;
}
double macierz::get_test(int i, int j){
if (i >= 0 && i < m_height){
if (j >= 0 && j < m_width){
return tab[i][j];
}
else{
return 0;
}
}
else{
return 0;
}
}
void macierz::zmien_rozmiar(int h, int w){
for (int i = m_width; i < m_width + w; i++)
tab[i] = new double[m_height + h];
//wpisywanie wartości
for (int i = 0; i < m_height + h; i++)
if (i < m_height){
for (int j = m_width; j < m_width + w; j++){
tab[i][j] = 0;
}
}
else{
for (int j = 0; j < m_width + w; j++){
tab[i][j] = 0;
}
}
m_height = h + m_height;
m_width = w + m_width;
//wypisywanie
for (int i = 0; i < m_height; i++){
cout << "\n";
for (int j = 0; j < m_width; j++)
printf("%2g ", tab[i][j]);
}
}
int main(){
macierz();
// macierz mk(5, 5); //39999 maks.
// mk.set_test(3,2,9);
// macierz mk2(mk);
//mk.set_test(3,2,9);
//double a = mk.get_test(1,0);
//printf("\na = %g", a);
//mk.zmien_rozmiar(1,1);
cout << "\nKoniec programu.\n";
}