Wykorzystanie modulo w tablicy do rozpoczynania nowej linii.

0

Czesc!
Pisze funkcje która najpierw losowałaby losowa liczbę k z zakresu <5,15> a potem uporządkowała by tablice po k w wierszu.
Tak wyglada caly kod funkcji,

void drukowanie_tablic(int tab[],int N)
{
	const int D = 5;
	const int G = 15;
	int k;
	srand(time(0));
	k = D + rand() % (G + 1 - D);
	cout << endl << k << endl;
	for (int i = 0; i < N; i++)
    {
        cout << tab[i] << ", ";
        if  (i%k==0)
        {
            cout << endl;
        }
    }
}

a interesuje nie ten kawalek

        cout << tab[i] << ", ";
        if  (i%k==0)
        {
            cout << endl;
        }

Przy takim zapisie, niestety 0 element w Tablicy jest również przerzucany do następnej linii.
Teraz moje pytanie bo niestety nie mogę wpaść jak przy wykorzystaniu modułu mógłbym pozbyć się tego problemu, jakies dobre rady ?

1

Z modułem nic nie zrobisz, gdyż dla każdego n 0%n jest zawsze równe zero.
To co możesz zrobić to pozbyć się zera z zakresu pętli.

for( int i=1 ; i<N+1 ; ++i )
{
    cout << tab[i-1];
    ( i%k!=0 && i<N ) ? cout << "," : cout << endl;
}

lub bezpośrednio z wyrażenia modulo

for( int i=0 ; i<N ; ++i )
{
    cout << tab[i];
    ( (i+1)%k!=0 && (i+1)<N ) ? cout << "," : cout << endl;
}
0
TomaszLiMoon napisał(a):

Z modułem nic nie zrobisz, gdyż dla każdego n 0%n jest zawsze równe zero.
To co możesz zrobić to pozbyć się zera z zakresu pętli,

for( int i=1 ; i<N+1 ; ++i )
{
    cout << tab[i-1] ;
    ( i%k!=0 && i<N ) ? cout << "," : cout << endl;
}

no dobrze, a masz moze jakis inny pomsyl, nie koniecznie z modułem jak rozwiazać ten problem
?

0

Czy N zawsze krotne k?

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