Лабораторная работаПрограммированиеГод: 2025НИУ ЮУрГУ: Южно-Уральский государственный университет
👁 11💼 0

Готовая лабораторная работа: Обработка матриц в C++

Загружена: 19.02.2026 09:23

Обработка набора матриц из текстового файла: программа на C++ читает k матриц, определяет их размеры и в каждой квадратной матрице заменяет элементы главной и побочной диагоналей на нули. Описаны алгоритмы чтения, обработки и записи, листинг кода и результаты тестирования. Полезно для закрепления навыков работы с файловым вводом/выводом, вложенными векторами и модульным проектированием на C++.

Содержание

Отчет Вариант 10
Оглавление
Задание	3
Ход выполнения	3
Описание программы	3
Тестирование программы	9
Заключение	12
Список использованных источников	13
Приложение 1. Листинг программы	13

Задание
Создать программу на языке C++, обеспечивающую обработку текстового файла в соответствии с вариантом ниже. Решение каждой подзадачи оформить в виде отдельной функции.
Вариант 10
В файле хранится k матриц размерности n×m. В каждой квадратной матрице заменить диагональные элементы нулями и записать во второй файл. Вывести на экран содержимое первого и второго файлов.

Заключение

В ходе работы была разработана программа для обработки матриц, реализующая подсчёт количества матриц, определение их размеров, обработку квадратных матриц путём замены диагональных элементов на нули и запись результатов в выходной файл. Программа успешно прошла тестирование на подготовленном наборе данных, показав корректную работу с матрицами различной размерности и форматов. Модульная структура программы обеспечивает удобство её использования, поддержки и дальнейшего расширения. Таким образом, поставленные задачи выполнены в полном объёме, а результаты работы подтверждают её надёжность и эффективность.

Список литературы

1.	Орлов, С. Технологии разработки программного обеспечения: Учебник / С. Орлов. – СПб.: Питер, 2002.
2.	Павловская, Т.А. С/С++. Программирование на языке высокого уровня / Т.А. Павловская. – СПб.: Питер, 2011. – 461 с.
3.	Шилдт, Г. С++: базовый курс / Г. Шилдт. – М.: Издательский дом «Вильямс», 2008. – 624 с.

Подробное описание

📘 О чем эта работа

В работе реализована утилита на C++ для пакетной обработки матриц, сохранённых в текстовом файле input.txt. Объектом является набор k матриц размерности n×m, задачей — идентификация квадратных матриц и замена элементов главной и побочной диагоналей на нули с последующей записью результатов в output.txt и выводом содержимого обоих файлов на экран.

📚 Что внутри

Документ содержит подробное описание алгоритма и полный листинг программы. Конкретные элементы содержимого:

  • Функция readMatricesFromFile: чтение матриц из текстового файла в структуру std::vector<std::vector<std::vector<int>>>, корректная обработка пустых строк как разделителей;
  • Функция printMatrixInfo и printMatrix: вывод номера матрицы, количества строк и столбцов, пометка о квадратности и печать содержимого;
  • Функция processSquareMatrices: проверка квадратности (rows==cols) и замена элементов главной ([i][i]) и побочной ([i][n-i-1]) диагоналей на 0;
  • Функция writeMatricesToFile: запись обработанных матриц в output.txt в том же текстовом формате с пустой строкой-разделителем;
  • Полный листинг программы с обработкой исключений при открытии файлов и примером main, демонстрирующим последовательность действий;
  • Блок‑схемы (рисунки 1–5) алгоритмов подпрограмм и основного процесса;
  • Результаты тестирования: набор из семи матриц разной размерности (включая 1x1 и матрицы, разделённые несколькими пустыми строками), сравнение входного и выходного файлов, подтверждение корректности обработки квадрата и сохранения неквадратных матриц.

📊 Для кого подходит

Подходит студентам факультетов, связанных с программированием и прикладной информатикой, для выполнения лабораторных и практических заданий по курсу «Программирование на C++», а также для преподавателей как демонстрационный пример модульного кода и работы с файловым вводом‑выводом.

✨ Особенности

Работа подчёркивает модульный подход: каждая подзадача вынесена в отдельную функцию, что упрощает тестирование и дальнейшую доработку. Обращаем внимание на конкретные преимущества:

  • Устойчивость к входному формату: пустые строки используются как разделители матриц, поддерживаются матрицы с различным числом столбцов в строках (разбор через istringstream);
  • Обработка граничных случаев: матрицы 1x1 корректно превращаются в [[0]]; неквадратные матрицы остаются без изменений;
  • Реализация исключений: проверка открытия файлов с бросанием runtime_error при ошибке;
  • Полный пример тестирования: в тексте описаны тесты на семи матрицах и показаны результаты сравнения input.txt и output.txt;
  • Листинг готов к компиляции в стандартном окружении C++ с минимальными зависимостями (iostream, fstream, sstream, vector).

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура отчёта соответствует стандартным требованиями: задание, ход выполнения, тестирование, выводы, список литературы и приложение с листингом.

Можно адаптировать?
Да. Функции из исходного кода легко модифицировать: изменить формат ввода/вывода, добавить проверку консистентности строк, логирование или расширить обработку диагоналей под иные правила.