Untitled

 avatar
unknown
c_cpp
a year ago
1.8 kB
3
Indexable
#include <iostream>

class Macierz
{
public:
    Macierz( int n )
    {
        if( n <= 0 )
        {
            throw std::invalid_argument( "Rozmiar macierzy musi byc liczba calkowita dodatnia!");
        }

        this->n = n;
        tab = new double* [ n ];
        for( int i = 0; i < n; ++i )
        {
            tab[ i ] = new double[ n ];
            for( int j = 0; j < n; ++j )
            {
                tab[ i ][ j ] = 0.0;
            }
        }
    }

    ~Macierz()
    {
        std::cout << "Dziala destruktor\n";
        for( int i = 0; i < n; ++i )
        {
            delete[] tab[ i ];
        }
        delete[] tab;
    }

    void print() const
    {
        for( int i = 0; i < n; ++i )
        {
            for( int j = 0; j < n; ++j )
            {
                std::cout << tab[ i ][ j ] << " ";
            }
            std::cout << std::endl;
        }
    }

    double** tab;
    int n;
};

int main()
{
    try {
        int rozmiar = 3;
        Macierz macierz(rozmiar);

        // Wypełnienie macierzy przykładowymi danymi
        macierz.tab[0][0] = 1.0;
        macierz.tab[0][1] = 2.0;
        macierz.tab[0][2] = 3.0;
        macierz.tab[1][0] = 4.0;
        macierz.tab[1][1] = 5.0;
        macierz.tab[1][2] = 6.0;
        macierz.tab[2][0] = 7.0;
        macierz.tab[2][1] = 8.0;
        macierz.tab[2][2] = 9.0;

        // Wypisanie macierzy
        macierz.print();
    }
    catch (const std::exception& e) {
        std::cerr << "Wyjątek: " << e.what() << std::endl;
    }

    {
        Macierz m1{ 15 };
    }

    Macierz m1{ 13 };

    std::cout << "Po bloku lokalnym!" << std::endl;

    return 0;
}
Editor is loading...
Leave a Comment