21

Re: задано квадратну матрицю

От воно:

void fill_array_scheme( int** arr, size_t n ){
    for ( size_t i = 0; i < n; ++i )
            for ( size_t j = n-1; j > 0; --j )
                if ( j > (n-1-i) )
                    arr[ i ][ j ] = 0;
}

22

Re: задано квадратну матрицю

А можеш будь-ласка зробити щоб ще головна діагональ теж нулями заповнювалась і пояснити кожен крок циклу, а то я сам довго думав і не виходило, щоб зрозуміти принцип!!!

23

Re: задано квадратну матрицю

void fill_array_scheme( int** arr, size_t n ){
    for ( int i = 0; i < n; ++i )
            for ( int j = n-1; j >= 0; --j )
                if ( j >= (n-1-i) )
                    arr[ i ][ j ] = 0;
}

На майбутнє: не бавтеся з беззнаковими типами на кшалт size_t (unsigned int), інакше ризикуєте отримати переповнення та тонкі граблі. Користуйте їх лише у випадках, коли інакше не можна.

Принцип роботи функції простий: ми так само йдемо по рядках, однак кожен рядок проходимо справа наліво.
Але ж тут момент: умовна точка відліку тепер - права межа, а не ліва, себто рух починаємо з позиції (n-1) - правого крайнього елемента - до позиції (0). Так само і з індексами: якщо раніше нас цікавили "ліві" позиції j, то тепер це - "праві".

Щоб заповнити й діагональ, дещо послаблюємо умову порівняння. От і вся магія. :)