losowanie z użyciem klasy

Odpowiedz Nowy wątek
2019-03-10 14:49
0

Witam, mam taki problem: próbuję napisać konstruktor, który będzie losować liczby do macierzy i potem to wyświetlać, mam tak:

class Macierz {
    std::vector<int> vec_;
    int wiersz_;
    int kolumna_;

public:
    Macierz();
    Macierz(int wiersz, int kolumna);
    void losuj(int wiersz, int kolumna);
    void wyswietl();
};

Macierz::Macierz() {

    wiersz_ = 0;
    kolumna_ = 0;
}

Macierz::Macierz(int wiersz, int kolumna) {
    wiersz_ = wiersz;
    kolumna_ = kolumna;
}

void Macierz::losuj(int wiersz, int kolumna) {
    srand(time(NULL));
    //std::vector<int> vec;

    wiersz_ = wiersz;
    kolumna_ = kolumna;
    for (int i = 0; i < kolumna_; i++) {
        for (int j = 0; j < wiersz_; j++) {
            j = rand() % 10 + 1;
            vec_.push_back(j);
        }
    }
}

void Macierz::wyswietl() {
    for (auto it = vec_.begin(); it != vec_.end(); it++) {
        std::cout << *it << " ";
    }
}

int main() {

    Macierz a;
    a.losuj(3, 3);
    a.wyswietl();

}

ale w przypadku 3x3 losuje mi raz 4 liczby, innym razem 2 liczby. nie wiem od czego to zależy i co robię źle, proszę o pomoc ;/

edytowany 2x, ostatnio: Jaehyo, 2019-03-10 14:55

Pozostało 580 znaków

2019-03-10 14:51
kq
0

A próbowałeś kompilować po edycji? Bo to co wkleiłeś się nie kompiluje.


Pozostało 580 znaków

2019-03-10 14:52
0

znaczy, ja mam to podzielone na pliki cpp i nagłowkowe i się kompiluje

Pozostało 580 znaków

2019-03-10 14:53
kq
0

W takim razie przygotuj MCVE, bo rozmawianie o problemach w innym kodzie niż przedstawiony mija się z celem.


Pozostało 580 znaków

2019-03-10 14:54

funkcja losuj() coś losuje, a nie konstruktor jak napisałeś w pierwszym zdaniu
a błąd jest tu
j = rand() % 10 + 1;
przypisujesz coś do licznika pętli

Pozostało 580 znaków

2019-03-10 14:56
0

faktycznie, dzięki za pomoc

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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