Klasa z macierzą double o wymiarach 2*2. Klasa powinna zawierać m.in. konstruktor inicjujący macierz, funkcje Dodaj_Macierz(),Odejmij macierz(), Pomnoz_macierz(), Wypisz_macierz().
Mój program wygląda tak:
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <string.h>
using namespace std;
class Macierz
{
private:
int m_size;
double ** tab_m;
public:
Macierz( int = 2 ); // konstruktor
~Macierz(); // destruktor
void wypelnij_macierz();
void wypisz_macierz();
Macierz dodaj_macierz( Macierz & m2 );
Macierz & operator =( const Macierz & ); //przeladowany operator =
};
Macierz & Macierz::operator =( const Macierz & M ) //tu jego implementacja
{
this->m_size = M.m_size;
for( int i = 0; i < m_size; ++i )
for( int j = 0; j < m_size; ++j )
this->tab_m[ i ][ j ] = M.tab_m[ i ][ j ];
}
Macierz::Macierz( int size )
{
m_size = size;
tab_m = new double *[ m_size ];
for( int i = 0; i < m_size; i++ )
tab_m[ i ] = new double[ size ];
}
Macierz::~Macierz() //destruktor
{
for( int i = 0; i < m_size; i++ )
delete tab_m[ i ]; //usuwanie elementow wiersza
delete[] tab_m; //usuwanie wiersza w kolumnie
}
void Macierz::wypelnij_macierz()
{
for( int i = 0; i < m_size; i++ )
{
for( int j = 0; j < m_size; j++ )
{
cout << "Wprowadz wartosc do macierzy [ " << i << " ][ " << j << " ] : ";
cin >> tab_m[ i ][ j ];
}
}
}
void Macierz::wypisz_macierz()
{
for( int i = 0; i < m_size; i++ )
{
for( int j = 0; j < m_size; j++ )
{
cout << tab_m[ i ][ j ] << " ";
}
cout << endl;
}
}
Macierz Macierz::dodaj_macierz( Macierz & m2 )
{
cout << "Dodaje macierze \n";
cout << "Wynik dodawania: \n";
Macierz suma = * this;
for( int i = 0; i < m_size; i++ )
{
for( int j = 0; j < m_size; j++ )
{
suma.tab_m[ i ][ j ] = tab_m[ i ][ j ] + m2.tab_m[ i ][ j ];
}
}
return suma;
}
int main()
{
//Deklaracja obiektów klasy Macierz
Macierz m1, m2, suma;
// Pobranie danych do macierzy
m1.wypelnij_macierz();
cout << endl;
m2.wypelnij_macierz();
cout << endl;
// Wyswietlenie podanych macierzy w celu sprawdzenia
cout << "Podane dane: \n\n";
m1.wypisz_macierz();
cout << endl;
m2.wypisz_macierz();
cout << endl;
// Dodawanie macierzy
suma = m1.dodaj_macierz( m2 );
cout << endl;
suma.wypisz_macierz();
cout << endl;
system( "PAUSE" );
return 0;
}
Brakuje w nim tylko funkcji Odejmij macierz i pomnóż macierz. Bo wypisać wypisuje i dodaje. Jestem w tym zielony, próbowałem to zrobić w analogiczny sposób do dodawania ale wyszły mi głupoty. Za wszelką pomoc będę bardzo wdzięczny ponieważ potrzebuje tego na jutro.