Tablica dwuwymiarowa

0

Witam. Mam do napisania program, który będzie wypełniał tablicę dwuwymiarową 5x5 losowymi liczbami dopóki iloczyn jednej przekątnej będzie większy od iloczynu drugiej. Oto mój kod :

 #include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

int main()
{
    int x,y, iloczyn1, iloczyn2;
    int tab[5][5];
    srand(time(0));
    do{
    for(y=0;y<5;y++)
    {
    for(x=0;x<5;x++){
    tab[y][x]=rand()%9+1;
    cout << tab[y][x] << " ";
    }
     cout << endl;
    }
    iloczyn1=1;
    for(y=0;y<5;y++)
    {
    iloczyn1 *= tab[y][y];
    }

    cout<<"Iloczyn pierwszej przekatnej ="<<iloczyn1<<endl;

    iloczyn2=tab[0][4]*tab[1][3]*tab[2][2]*tab[3][1]*tab[4][0];
    cout<<"Iloczyn drugiej przekatnej ="<<iloczyn2<<endl;

    }while(iloczyn1<iloczyn2);
    return 0;
}

Mój problem polega na tym, ze nie wiem jak napisać wartość iloczynu drugiej przekątnej za pomocą np. pętli for tak jak napisałem to dla pierwszej przekątnej. Proszę o pomoc.

2

Twoja indentacja kodu jest bolesna do czytania.

int iloczyn = 0;
for(int i = 0; i < 5; i++){
	iloczyn *= tab[i][4-i];
}

Przy okazji, rand()%x nie jest najlepszym rozwiązaniem jeśli chcesz uzyskać dobrą losowość. C++ ma <random>, które dostarcza std::unique_int_distribution. Przykład użycia: http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution

Dlaczego nie rand() (video): https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful

1

TBrain trza czasami upgradować iloczyn1 *= tab[y][5-1-y];

0
kq napisał(a):

Dlaczego nie rand() (video): https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful

O raju! nie wiedziałem, że random_device jest tak wolne w porównaniu do mt19937... ;]

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