Заполнить матрицу значениями вектора от правого вержнего угла по диагонали - C (СИ)
Формулировка задачи:
Заполнить матрицу значениями вектора b1, b2, ... ,b81 от правого вержнего угла по диагонали: влево - вниз. (
Примечание
. На рисунке указаны индексы элементов вектора b.) Помогите, пожалуйста, составить программу и объясните ее. Буду очень благодарен.Решение задачи: «Заполнить матрицу значениями вектора от правого вержнего угла по диагонали»
textual
Листинг программы
#include <stdio.h>
int main(void) {
int matrix[20][20] = {0};
int size = 100;
while (size > 20 || size < 0) {
printf ("size of the matrix (max. 20): ");
scanf ("%i", &size);
if (size == 0)
return 0;
}
int i, j, temp_i, temp_j;
int number = 1;
for (i=0; i<size; ++i)
for (j=0; j<size; ++j) { // вот изменение
if (matrix[i][j] == 0) {
matrix[i][j] = number++;
temp_i = i + 1;
temp_j = j - 1; // вот
while ((temp_i<size) && (temp_j>=0)) // вот
matrix[temp_i++][temp_j--] = number++; // вот
}
}
for (i=0; i<size; ++i) {
for (j=0; j<size; ++j)
printf ("%3i ", matrix[i][j]);
printf ("\n");
}
return 0;
}