Введение
В этом лабораторном практикуме вы научитесь вычитать две матрицы в программе на языке C. Практикум охватывает следующие шаги:
Во-первых, вы узнаете, как считывать размерности и элементы двух матриц из пользовательского ввода. Вы создадите программу на языке C, которая попросит пользователя ввести количество строк и столбцов, а затем элементы двух матриц.
Далее, вы реализуете операцию вычитания матриц, где вы вычтете соответствующие элементы двух матриц и сохраните результат в новой матрице. Наконец, вы научитесь выводить результирующую матрицу.
Чтение Размеров и Элементов
В этом шаге вы научитесь считывать размеры и элементы матриц из пользовательского ввода в программе на языке C для вычитания матриц. Мы создадим программу, которая позволит пользователям вводить размер и значения двух матриц.
Сначала создадим новый файл C для нашей программы вычитания матриц:
cd ~/project
nano matrix_subtraction.c
Теперь добавьте следующий код в файл:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
// Чтение размеров матриц
printf("Введите количество строк: ");
scanf("%d", &rows);
printf("Введите количество столбцов: ");
scanf("%d", &cols);
// Ввод элементов первой матрицы
printf("Введите элементы первой матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Ввод элементов второй матрицы
printf("Введите элементы второй матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
return 0;
}
Пример вывода:
Введите количество строк: 2
Введите количество столбцов: 2
Введите элементы первой матрицы:
Введите элемент [0][0]: 5
Введите элемент [0][1]: 6
Введите элемент [1][0]: 7
Введите элемент [1][1]: 8
Введите элементы второй матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [1][0]: 3
Введите элемент [1][1]: 4
Теперь скомпилируем и запустим программу:
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
Описание кода:
- Мы определяем максимальный размер матрицы 100x100 с помощью
MAX_SIZE rowsиcolsхранят размеры матриц- Создаются два двумерных массива
matrix1иmatrix2для хранения элементов матриц scanf()используется для чтения размеров матриц и элементов из пользовательского ввода- Вложенные циклы используются для ввода элементов для обеих матриц
Вычитание Соответствующих Элементов
В этом шаге вы научитесь вычитать соответствующие элементы двух матриц и сохранять результат в новой матрице. Мы расширим предыдущую программу для выполнения вычитания матриц.
Откройте существующий файл и измените код:
cd ~/project
nano matrix_subtraction.c
Обновите код с логикой вычитания матриц:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// Чтение размеров матриц
printf("Введите количество строк: ");
scanf("%d", &rows);
printf("Введите количество столбцов: ");
scanf("%d", &cols);
// Ввод элементов первой матрицы
printf("Введите элементы первой матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Ввод элементов второй матрицы
printf("Введите элементы второй матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// Вычитание соответствующих элементов
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
return 0;
}
Пример вывода:
Введите количество строк: 2
Введите количество столбцов: 2
Введите элементы первой матрицы:
Введите элемент [0][0]: 5
Введите элемент [0][1]: 6
Введите элемент [1][0]: 7
Введите элемент [1][1]: 8
Введите элементы второй матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [1][0]: 3
Введите элемент [1][1]: 4
Описание кода:
- Создается новый двумерный массив
resultдля хранения результатов вычитания - Вложенные циклы перебирают каждый элемент матриц
result[i][j]вычисляется путем вычитания соответствующих элементов изmatrix1иmatrix2- Вычитание выполняется по правилам поэлементного вычитания матриц
Теперь скомпилируем программу:
gcc matrix_subtraction.c -o matrix_subtraction
Вывод Результирующей Матрицы
В этом шаге вы узнаете, как вывести результирующую матрицу после вычитания. Мы изменим предыдущую программу, чтобы отобразить результаты вычитания.
Откройте существующий файл и обновите код:
cd ~/project
nano matrix_subtraction.c
Обновите код с логикой вывода матрицы:
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// Чтение размеров матриц
printf("Введите количество строк: ");
scanf("%d", &rows);
printf("Введите количество столбцов: ");
scanf("%d", &cols);
// Ввод элементов первой матрицы
printf("Введите элементы первой матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// Ввод элементов второй матрицы
printf("Введите элементы второй матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// Вычитание соответствующих элементов
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
// Вывод результирующей матрицы
printf("\nРезультирующая матрица после вычитания:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Скомпилируйте и запустите программу:
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
Пример вывода:
Введите количество строк: 2
Введите количество столбцов: 2
Введите элементы первой матрицы:
Введите элемент [0][0]: 5
Введите элемент [0][1]: 6
Введите элемент [1][0]: 7
Введите элемент [1][1]: 8
Введите элементы второй матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [1][0]: 3
Введите элемент [1][1]: 4
Результирующая матрица после вычитания:
4 4
4 4
Описание кода:
- Добавляется новый вложенный цикл для вывода матрицы
result printf("%d ", result[i][j])выводит каждый элемент- Дополнительный
printf("\n")создает новую строку после каждой строки - Вывод показывает матрицу с вычисленными значениями.
Резюме
В этом лабораторном практикуме вы изучили, как считывать размеры и элементы матриц из пользовательского ввода в программе на C для вычитания матриц. Программа позволяет пользователю ввести размер и значения двух матриц, которые затем сохраняются в двух двумерных массивах. Этот шаг закладывает основу для последующего шага вычитания соответствующих элементов двух матриц и вывода результирующей матрицы.
Программа запрашивает у пользователя количество строк и столбцов, а затем направляет его по вводу элементов первой и второй матриц. Это гарантирует, что программа может правильно обрабатывать матрицы разных размеров и хранить введенные данные для дальнейшей обработки.



