Заменить нулями все элементы матрицы, расположенные на главной диагонали - C (СИ)
Формулировка задачи:
В файле F1 задано матрицу чисел А (12,12) заменить нулями все элементы, расположенные на главной диагонали и находятся в диапазоне заданных чисел a и b.
Решение задачи: «Заменить нулями все элементы матрицы, расположенные на главной диагонали»
textual
Листинг программы
#include <stdio.h>
#define SZ 12 /*размерность матрицы*/
void main(void)
{
FILE *file;
int A[SZ][SZ],i,j;
int a,b;
file=fopen("F1","rt");
if(file==NULL){puts("\nОшибка открытия файла."); return;}
/*читаем матрицу из файла*/
for(i=0;i<SZ;i++)
for(j=0;j<SZ;j++)
fscanf(file,"%d",&A[i][j]);
fclose(file);
puts("\nВведите величину a:");scanf("%d",&a);
puts("\nВведите величину b:");scanf("%d",&b);
for(i=0;i<SZ;i++)
{
if(A[i][i] >= a && A[i][i] <= b) A[i][i]=0; /*проверяем главную диагональ и меняем элементы*/
}
/*Выводим на экран новую матрицу*/
puts("\nМатрица после замены:\n");
for(i=0;i<SZ;i++)
{
for(j=0;j<SZ;j++) printf("%4d ",A[i][j]);
puts("\n");
}
}
Объяснение кода листинга программы
- Включаем заголовочный файл, который содержит функции ввода-вывода
- Определяем размерность матрицы (SZ)
- Объявляем переменные:
- A - двумерный массив, представляющий собой матрицу
- i, j - индексы для обхода матрицы
- a, b - величины, с которыми сравниваются элементы главной диагонали
- Открываем файл
F1для чтения - Читаем матрицу из файла, используя два вложенных цикла
- Закрываем файл
- Выводим сообщение с просьбой ввести значения a и b
- Считываем значения a и b с помощью функции scanf
- Используя вложенный цикл, проверяем каждый элемент главной диагонали и заменяем его нулем, если он находится в заданном диапазоне
- Выводим на экран новую матрицу, используя вложенный цикл для обхода всех элементов матрицы
- Завершаем программу