Сформировать матрицу по образцу - C (СИ) (150613)
Формулировка задачи:
Треугольные матрицы (закрашены ненулевые элементы)
Решение задачи: «Сформировать матрицу по образцу»
textual
Листинг программы
#include <stdio.h>
int main () {
const int n=5, m=7; //строк и столбцов
int a[n][m],i,j,k=0;
for (i=0; i<n; i++)
for (j=0; j<m; j++) a[i][j]=0; //занулили
for (i=0; i<n; i++) { //записали 1 куда надо
for(j=k; j<m-k; j++) a[i][j]=1;
k++;
}
for (i=0; i<n; i++) {
printf ("\n");
for (j=0; j<m; j++) printf ("%2d",a[i][j]); //вывели
}
fflush(stdin); getchar(); return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные:
n- количество строк в матрице (равно 5).m- количество столбцов в матрице (равно 7).a- массив-матрица размеромnнаm.i,j- индексы для обхода матрицы.k- счётчик для перебора столбцов при записи единиц.
- Матрица инициализируется нулями:
- Используется два вложенных цикла
for, чтобы пройти по всем элементам матрицы. - Условие цикла
forдля столбцов используетm, а неn, так как в этом случае будет выполнено меньшее количество итераций (посколькуmменьшеn).
- Используется два вложенных цикла
- В матрицу записываются единицы:
- Используется два вложенных цикла
for, чтобы пройти по строкам и столбцам, где нужно записать единицы. - Условие цикла
forдля строк используетn, а неm, так как в этом случае будет выполнено меньшее количество итераций (посколькуnменьшеm). - Переменная
kиспользуется для контроля количества итераций во втором вложенном циклеfor.
- Используется два вложенных цикла
- Матрица выводится на экран:
- Используется два вложенных цикла
for, чтобы пройти по всем элементам матрицы. - Внутри внешнего цикла
forдобавляется символ новой строки\n, чтобы перейти на новую строку. - Внутренний цикл
forиспользуетm, а неn, так как строки выводятся в столбик (без переносов). - Используется функция
printfдля вывода чисел на экран. - Используется функция
fflushдля очистки буфера ввода (чтобы можно было сразу же ввести символ после вывода). - Используется функция
getcharдля получения символа ввода (чтобы можно было сразу же ввести символ после вывода). - Функция
return 0;завершает программу.
- Используется два вложенных цикла