До настоящего момента алгоритм генерации любого элемента матрицы был одинаков: все элементы равны одному числу или все элементы генерируются псевдослучайно по одному правилу. Рассмотрим теперь, как заполнить матрицу, разные элементы которой генерируются по-разному. Для примера заполним побочную и главную диагонали нулями, а остальные элементы – случайными числами.
Для решения задачи, прежде всего, нужно понять, как установить, принадлежит ли элемент одной из диагоналей или нет. Очевидно, что главная диагональ задаётся условием, что номер строки равен номеру столбца: i==j. Для побочной диагонали условие следующее i==size-j-1. Единица отнимается из-за того, что индексация элементов массива начинается с нуля, а не с единицы. Таким образом, заполнить матрицу указанным способом можно так:
for (int i=0; i<size; i++) {
for (int j=0; j<size; j++) {
if (i==j || i==size-j-1) {
matrix[i][j] = 0;
} else {
matrix[i][j] = rnd(-9, 10);
}
}
}
Если использовать сокращённую форму if-else, то заполнение примет следующий вид:
for (int i=0; i<size; i++) {
for (int j=0; j<size; j++) {
matrix[i][j] = (i==j || i==size-j-1) ?
0 : rnd(-9, 10);
}
}
