|
Отчёт по лабораторной работе №1. Задание Задан массив Х размером N. Сформировать из него матрицу А, содержащую по L элементов в строке. Недостающие элементы в последней строке (если такие будут) заполнить нулями. Напечатать матрицу по строкам. Выполнил студент группы 484
Форматы представления данных Программа использует следующие переменные:
Таблица 1 – Переменные, используемы в программе
Имя
| Тип
| Описание
| size
| int
| Размерность исходного массива
| matrix
| int**
| Массив, выделенный под матрицу
| arr
| int*
| Исходный массив
| choiсe
| int
| Выбор пункта меню
|
Для задания максимального и минимального размера массивов, а также предела генерирования случайных чисел используются следующие константы:
Таблица 2 – Константы, используемы в программе
Имя
| Тип
| Значение
| Описание
| MIN_ARRAY_SIZE_VALUE
| const int
| 1
| Минимальный размер массива
| MAX_ARRAY_SIZE_VALUE
| const int
| 1000
| Максимальный размер массива
| MIN_ARRAY_SIZE_VALUE
| const int
| 1
| Минимальный размер строки матрицы
| MAX_ARRAY_SIZE_VALUE
| const int
| 10
| Максимальный размер строки матрицы
| RAND
| const int
| 1000
| Предел генерирования случайных чисел
| Структура программы В силу большого количества функций программа разделена на три исполняемых модуля, из которых один является основным и отвечает за запуск программы, а два оставшихся содержат в себе функции, необходимые для работы программы.
Модуль FileWork:
Таблица 3 – Функции, составляющие модуль FileWork
Имя
| Описание
| OutputData
| Сохранение данных в файл
| InputData
| Ввод данных из файла
| Модуль Input:
Таблица 4 – Функции, составляющие модуль Input
Имя
| Описание
| GetInt
| Получение целого числа
| GetBool
| Получение переменной типа bool
| GetMenuItem
| Получение выбора пользователя
| GetInput
| Проверка пользовательского ввода
|
Модуль ArraySetter: Таблица 5 – Функции, составляющие модуль ArraySetter
Имя
| Описание
| SetArr
| Функция создания массива
|
Модуль MatrixSetter: Таблица 6 – Функции, составляющие модуль MatrixSetter
Имя
| Описание
| SetMatrix
| Функция создания матрицы
|
Модуль Menu: Таблица 7 – Функции, составляющие модуль Menu
Имя
| Описание
| MainMenu
| Вывод главного меню на экран
| DisplayFileMenu
| Вывод меню работы с файлами
| DisplayGoodbyeMenu
| Вывод меню завершения программы
|
Модуль ColorSetter: Таблица 7 – Функции, составляющие модуль ColorSetter
Имя
| Описание
| SetColor
| Установка цвета выводимого текста
|
Описание хода выполнения лабораторной работы В ходе лабораторной работы было создано решение (Solution) в интегрированной среде разработки Microsoft Visual Studio C++ 2019. В нём был создан проект. В созданном проекте нужно было отключить использование предварительно скомпилированных заголовков, а также удалить файлы “pch.h” и “pch.cpp”. После набора текста программы выяснилось, что вывод текста на экран консольного приложения работает неправильно из-за различия кодировок консольного приложения и среды разработки. Для решения этой проблемы была использована функция setlocale(LC_ALL, "Russian"), которая обеспечивает работу приложения с символами кириллицы. При работе программы с файлами нужно было добавить проверки на валидность имени файла, а также на то, создан ли файл или нет при сохранении. При получении пользовательского ввода необходимо было добавить проверку, на его корректность. Перед повторением программы необходимо очищать память для того, чтобы не возникало непредвиденных ошибок, связанных с заполнением областей памяти старыми числами.
Результат работы программы В результате работы программа выводит два начальных массива различными цветами, а также итоговый массив, элементы которого выводятся различными цветами, в зависимости от того, из какого массива они были взяты.
Рисунок 2 – Заполнение массивов с клавиатуры
Рисунок 3 – Заполнение массивов случайными числами
Рисунок 4 – Заполнение массивов из файла
Рисунок 5 – Попытка сохранить в уже созданный файл
Рисунок 6 – Попытка сохранить в файл с запрещенным именем
Текст программы [--- Начало программы ---]
// [--- Начало программы ---]
// Lab1.cpp
// Лабораторная работа №1.
// Студент группы 484, Криштоп Артём Александрович. 2019 год.
#include
#include "MatrixSetter.h"
#include "MenuItems.h"
#include "Menu.h" using namespace std; void main() {
MenuItem choice = static_cast |
|
|