Введение
В этом лабораторном практикуме вы научитесь складывать две матрицы на языке программирования C. Практикум охватывает следующие шаги: чтение размеров и элементов обеих матриц, сложение соответствующих элементов и вывод результирующей матрицы. Вы начнете с создания программы на C для чтения размеров и элементов матрицы, затем реализуете логику сложения матриц и, наконец, выведете итоговую матрицу. Цель практикума — предоставить практический опыт работы с матрицами и линейной алгеброй с использованием языка C.
Чтение Размеров и Элементов Обеих Матриц
В этом шаге вы узнаете, как читать размеры и элементы двух матриц в программе на языке C. Для сложения матриц необходимы матрицы одинакового размера, поэтому мы сначала реализуем ввод размеров и элементов матриц.
Создание Программы для Сложения Матриц
Сначала создайте новый файл C для сложения матриц:
cd ~/project
nano matrix_addition.c
Теперь давайте напишем код для чтения размеров и элементов матриц:
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE];
// Чтение размеров матриц
printf("Введите количество строк (макс. %d): ", MAX_SIZE);
scanf("%d", &rows);
printf("Введите количество столбцов (макс. %d): ", MAX_SIZE);
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;
}
Компиляция и Запуск Программы
Скомпилируйте программу:
gcc matrix_addition.c -o matrix_addition
Пример Вывода
При запуске программы она запросит ввод размеров и элементов матриц:
Введите количество строк (макс. 10): 2
Введите количество столбцов (макс. 10): 3
Введите элементы первой матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [0][2]: 3
Введите элемент [1][0]: 4
Введите элемент [1][1]: 5
Введите элемент [1][2]: 6
Введите элементы второй матрицы:
Введите элемент [0][0]: 7
Введите элемент [0][1]: 8
Введите элемент [0][2]: 9
Введите элемент [1][0]: 10
Введите элемент [1][1]: 11
Введите элемент [1][2]: 12
Объяснение Кода
#define MAX_SIZE 10устанавливает максимальное ограничение для размеров матрицscanf()используется для чтения целочисленных значений для строк, столбцов и элементов матриц- Вложенные циклы
forиспользуются для ввода элементов обеих матриц - Программа гарантирует, что размеры матриц находятся в пределах заданного максимального размера
Сложение Соответствующих Элементов
В этом шаге вы научитесь складывать соответствующие элементы двух матриц и сохранять результат в новой матрице.
Обновление Программы для Сложения Матриц
Откройте предыдущий файл C:
cd ~/project
nano matrix_addition.c
Измените программу для сложения элементов матриц:
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// Предыдущий код ввода остается неизменным
// ... (ввод размеров и элементов матриц matrix1 и matrix2)
// Сложение соответствующих элементов
printf("\nРезультирующая матрица (Matrix1 + Matrix2):\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
Компиляция и Запуск Программы
Скомпилируйте обновлённую программу:
gcc matrix_addition.c -o matrix_addition
Запустите программу:
./matrix_addition
Пример Вывода
Введите количество строк (макс. 10): 2
Введите количество столбцов (макс. 10): 3
Введите элементы первой матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [0][2]: 3
Введите элемент [1][0]: 4
Введите элемент [1][1]: 5
Введите элемент [1][2]: 6
Введите элементы второй матрицы:
Введите элемент [0][0]: 7
Введите элемент [0][1]: 8
Введите элемент [0][2]: 9
Введите элемент [1][0]: 10
Введите элемент [1][1]: 11
Введите элемент [1][2]: 12
Результирующая матрица (Matrix1 + Matrix2):
8 10 12
14 16 18
Объяснение Кода
- Создается новый двумерный массив
resultдля хранения суммы элементов матриц - Вложенные циклы
forперебирают каждый элемент обеих матриц result[i][j] = matrix1[i][j] + matrix2[i][j]складывает соответствующие элементыprintf()используется для вывода результирующей матрицы
Вывод Результирующей Матрицы
В этом шаге вы научитесь форматировать и выводить результирующую матрицу в удобочитаемом виде.
Улучшение Функции Вывода Матрицы
Откройте предыдущий файл C:
cd ~/project
nano matrix_addition.c
Обновите программу с помощью отдельной функции вывода матрицы:
#include <stdio.h>
#define MAX_SIZE 10
// Функция для вывода матрицы
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int cols, const char* matrixName) {
printf("%s:\n", matrixName);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// Предыдущий код ввода остается неизменным
// ... (ввод размеров и элементов матриц matrix1 и matrix2)
// Сложение соответствующих элементов
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
// Вывод матриц
printMatrix(matrix1, rows, cols, "First Matrix");
printMatrix(matrix2, rows, cols, "Second Matrix");
printMatrix(result, rows, cols, "Resulting Matrix (Matrix1 + Matrix2)");
return 0;
}
Компиляция и Запуск Программы
Скомпилируйте обновлённую программу:
gcc matrix_addition.c -o matrix_addition
Запустите программу:
./matrix_addition
Пример Вывода
Введите количество строк (макс. 10): 2
Введите количество столбцов (макс. 10): 3
Введите элементы первой матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [0][2]: 3
Введите элемент [1][0]: 4
Введите элемент [1][1]: 5
Введите элемент [1][2]: 6
Введите элементы второй матрицы:
Введите элемент [0][0]: 7
Введите элемент [0][1]: 8
Введите элемент [0][2]: 9
Введите элемент [1][0]: 10
Введите элемент [1][1]: 11
Введите элемент [1][2]: 12
First Matrix:
1 2 3
Second Matrix:
7 8 9
Resulting Matrix (Matrix1 + Matrix2):
8 10 12
14 16 18
Объяснение Кода
- Создана функция
printMatrix()для вывода матриц с согласованным форматированием - Спецификатор формата
%4dобеспечивает выравнивание столбцов при выводе - Функция принимает матрицу, размеры и имя в качестве параметров
- Матрицы выводятся с описательными заголовками
- Вложенные циклы перебирают элементы матрицы для вывода
Резюме
В этом лабораторном практикуме вы изучили, как считывать размеры и элементы двух матриц в программе на языке C. Это важный шаг для сложения матриц, так как для этого требуются матрицы одинакового размера. Вы реализовали ввод размеров и элементов матриц, обеспечив, что программа может обрабатывать матрицы размером до 10x10.
После считывания размеров и элементов матриц следующим шагом является сложение соответствующих элементов двух матриц и сохранение результирующей матрицы.



