2. otázka, ako spravím Transponovanú maticu tak aby mi to z matice MxN spravilo NxM a potom keď zavolám funkciu Vypis ju to vypísalo? (teraz mi to spraví transponovanú maticu a vo funkcií Transponuj mi ju aj vypíše, ale ono to zmení tú maticu len v tej funkcií, keď ju dám vypísať tak mi vypíše tú maticu pred tým ako som ju "zmenil"), chcem aby ju to po zavolaní funkcie Transponuj zmenilo a potom ked dam Vypis tak aby to vypisvalo tu zmenenu maticu
Ďakujem za rady
main()
Kód: Vybrať všetko
Matica prva(3,4,9);
Matica druha(3,4,9);
prva.Vypis();
cout << "===============" << endl;
druha.Vypis();Kód: Vybrať všetko
#pragma once
class Matica
{
private:
int ** m_matica1;
int m_riadok; // počet riadkov
int m_stlpec; // počet stlpcov
int m_max; // maximalna hodnota prvku v matici
public:
Matica(void);
Matica(int riadok, int stlpec, int max);
Matica(const Matica & m);
~Matica(void);
int getRiadok() const {return m_riadok;}
int getStlpec() const {return m_stlpec;}
int getMax() const {return m_max;}
void Vypis(); //Funkcia na Vypis matice
void Generuj(int riadok, int stlpec, int max);
void Transponuj();
};Kód: Vybrať všetko
#include "StdAfx.h"
#include "Matica.h"
#include <iostream>
using namespace std;
#include <ctime>
Matica::Matica(void): //Konštruktor bez parametrov vytvorí maticu 2x2 a naplni ju nahodnymi cislami od 0 po 9
m_riadok(2),
m_stlpec(2)
{
srand((unsigned int) time(NULL)); //vytvorenie generatora nahodnych cisel
int max=9;
int min=0;
m_matica1 = new int* [m_riadok];
for(int i=0; i<m_riadok; i++)
{
m_matica1[i] = new int[m_stlpec]; // pole pre každý riadok
}
for (int i=0; i<m_riadok; i++)
{
for (int j=0; j<m_stlpec; j++)
{
m_matica1[i][j]= rand() % (max - min + 1) + min; //nahodne naplnenie matice cislami v intervale <min,max>
}
}
}
Matica::Matica(int riadok, int stlpec, int max) : // Vytvori maticu s rozmermy MxN, ktoré zadá užívateľ s max. hodnotou nahodnych cisel,
m_riadok(riadok), // ktoré tiež zadá užívateľ
m_stlpec(stlpec),
m_max(max)
{
m_matica1 = new int* [riadok];
int min=0;
srand((unsigned int) time(NULL));
for(int i=0; i<riadok; i++)
{
m_matica1[i] = new int[stlpec]; // pole pre každý riadok
}
for (int i=0; i<m_riadok; i++)
{
for (int j=0; j<m_stlpec; j++)
{
m_matica1[i][j]= rand() % (max - min + 1) + min; //naplnenie matice nahodnymi cislami
}
}
}
Matica::Matica(const Matica & m)
{
this->m_riadok = m.m_riadok;
this->m_stlpec = m.m_stlpec;
this->m_matica1 = m.m_matica1;
for (int i=0; i<m.m_riadok; i++)
{
for (int j=0; j<m.m_stlpec; j++)
{
this->m_matica1[i][j]= m.m_matica1[i][j];
}
}
}
Matica::~Matica(void)
{
for (int i=0; i<m_riadok; i++)
{
delete [] m_matica1[i];
}
delete [] m_matica1;
}
void Matica::Generuj(int riadok, int stlpec, int max)
{
srand((unsigned int) time(NULL));
int min=0;
for (int i=0; i<m_riadok; i++)
{
for (int j=0; j<m_stlpec; j++)
{
m_matica1[i][j]= rand() % (max - min + 1) + min;
}
}
}
//void Matica::Transponuj(int matica1, int riadok, int stlpec)
void Matica::Transponuj()
{
for (int i=0; i<m_stlpec; i++)
{
for (int j=0; j<m_riadok; j++)
{
m_matica1[j][i] = m_matica1[j][i];
cout.width(3);
cout << m_matica1[j][i];
}
cout << endl;
cout << endl;
}
}
void Matica::Vypis()
{
for (int i=0; i<m_riadok; i++)
{
for (int j=0; j<m_stlpec; j++)
{
cout.width(3); //zarovnanie cisel
cout << m_matica1[i][j];
}
cout << endl;
cout << endl;
}
}