problem ze wskaźnikiem w tablicy alokowanej dynamicznie

0
#include <iostream>
#include <cstdlib>
#include <limits>
#include <iomanip>

using namespace std;

class macierz
{
public:

    // atrybuty
    int wiersze;
    int kolumny;

    // metody 
    void rozmiar()
    {
        cout << "liczba wierszy: ";
        cin >> wiersze;
        cout << "liczba kolumn: ";
        cin >> kolumny;

    }
    void dane()
    {
        int** tab = new int* [wiersze]; //alokacja pamieci 
        for (int i = 0; i < wiersze; ++i)
        {
            tab[i] = new int[kolumny]; //alokacja pamieci
            for (int j = 0; j < 1; ++j) //wpisanie wartosci do tablicy
                for (int j = 0; j < kolumny; j++) {
                    cin >> tab[i][j];
                }
        }
    }
    void wyswietlanie()
    {
        //wyswietl macierz
        for (int i = 0; i < wiersze; ++i, cout << endl)
            for (int j = 0; j < kolumny; ++j)
                cout << tab[i][j] << '\t';
    }
    void usuwanie()
    {
        for (int i(0); i < wiersze; ++i)
            delete[] tab[i]; //uwolnienie pamieci
        delete[] tab; //uwolnienie pamieci
        *tab = NULL;
    }

};

char wybór;

int main()
{
    int choice = 0;

    cout << "witaj w kalkulatorze macierzy  \n"
        "wybierz obliczenia jakie chcesz wykonac \n\n";

        cout << "1 - dodawanie\n"
             << "2 - odejmowanie\n"
             << "3 - mnozenie\n"
             << "4 - obliczanie wyznacznika\n"
             << "5 - wyjscie\n\n"
             << "wprowadz swoj wybor: ";

        while (!(cin >> choice)) {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cerr << "\nERROR: wprowadz prawidlowe dane wejsciowe!\n"
                << "wprowadz swoj wybor ponownie: ";
        }

        cout << endl;

        switch (choice) {
        case 1:
            macierz a;
            a.rozmiar();
            cout << "macierz a:\n";
            a.dane();
            a.wyswietlanie();
            break;
        }

        cout << "\nnacisnij jakis przycisk...\n";

        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cin.get();

        system("CLS");
    }
1

Trzeba zrobić dokładnie to samo co zrobiłeś dla wymiarów tablicy.

0

@_13th_Dragon: Tylko jak to ma wyglądać bo jeśli dodam int *tab to nie działa mi i tak coś

0

Masz nie dodać tylko przenieść deklarację z metody.

0

Wstawiłeś kod - ale jakie jest pytanie?

0

nie działa mi funkcja void wyswietlanie, usuwanie

2

tab jest zmienną w funkcji, a nie klasie. Przenieś definicję w odpowiednie miejsce. Swoją drogą, jest jakiś powód dla którego nie używasz std::vector?

0

główny powód to taki że nie wiem jak go używać

działa, nie mam pojęcia co wcześniej źle robiłem

a w jaki sposób mogę użyć std::vector?

3

@Lemonhaze2108:
Mówił Ci ktoś, ze jesteś leń, ewentualnie cierpiący obywatel wykluczony z odstępu do googla.

Jak chcesz bywać na forach dla programistów, to my tu nie znamy zwrotu "nie działa" - lecz podanie konkretnych przejawów

0

vector<vector<int>> matrix(rowCount,vector<int>(colCount));

1
#include <iostream>
#include <vector>

using namespace std;
using table2D = vector<vector<int>>;

auto create( int rows , int columns )
{
    table2D result( columns , vector<int>( rows , 0 ) );
    for( auto& row : result ){ for( auto& value : row ) cin >> value; }
    return result;
}

ostream& operator<<( ostream& out , const table2D& table )
{
    for( const auto& row : table )
    {
        for( const auto& value : row )out << value << ' ';
        out << endl;
    }
    return out;
}

int main()
{
    table2D table = create(3,2);
    cout << table;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1