wyświetlanie tablicy jednowymiarowej w formie tablicy dwuwymiarowej/macierzy

0

Witam,
Utworzyłem tablicę jednowmiarową:

int a = 0;

for (int i = 0; i < N*N; i++) {
cin >> tablica[a];
a++;
}

a teraz próbuję ją wyświetlić w formie tablicy dwuwymiarowej:

np:

1 2 3
4 5 6
7 8 9

Napisałem taki fragment kodu, który działa dla 4 elementów w tablicy:

for (int i = 0; i < N; i++)
{
cout << tablica[i] << " ";
}

cout << endl;

for (int i = N; i < 2*N; i++)
	{
		cout << tablica[i] << " ";
	}

po wpisaniu N = 4, wyświetla się:

1 2
3 4

Mam pytanie jak zapisać coś takiego w jednej zgrabnej pętli tak aby działało dla dowolnego N?

1
for(size_t i=0,y=0;y<N;++y,cout<<endl) for(size_t x=0;x<N;++x,++i) cout<<tablica[i]<<' ';

ewentualnie: for(size_t i=0;i<N*N;cout<<("\n"+((++i)%N>0))) cout<<tablica[i]<<' ';

 lub tez: <code class="cpp">for(size_t y=0,x=0,i=0,r=0;y<N;r=(++x>=N),cout<<tablica[i++]<<" \n"[r],y+=r) if(r) x=0;

Aczkolwiek uprzedzam ta druga wbrew pozorom jest strasznie powoina.

0

Pierwsze rozwiązanie nie chce się skompilować. Jest problem ze zmienna 'y'. Pojawia się błąd, że nie została zadeklarowana.

0

Co do drugiego przykładu zastanawia mnie ten zapis:

 cout << ( "\n"+ (( ++i) % N > 0 ))

Nie mogłoby być po prostu

 cout << ("\n" + ( (++i) % N ) ?

Trochę też nie rozumiem jak działa ta pętla. Korzystałem zwykle z takiej gdzie w miejscu zwiększania licznika pętli było zwykłe i++ lub coś podobnego.

0

Instrukcja krokowa może być dowolnie skomplikowana, w tym nawet łączona:

for(int p=0,k=0;p<k;++p,--k) { ... }

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