Разработка функциональных модулей обработки агрегатных данных
Автор: Atalixian • Сентябрь 30, 2019 • Лабораторная работа • 5,966 Слов (24 Страниц) • 485 Просмотры
Липецкий государственный технический университет
Факультет автоматизации и информатики
Кафедра автоматизированных систем управления
ЛАБОРАТОРНАЯ РАБОТА №1
по программированию
Разработка функциональных модулей обработки агрегатных данных
Студент
Группа АС-17
Руководитель
Ассистент Широков А. С.
Липецк 2018г.
Цель работы
Освоить способы динамического выделения памяти и разработки функций на примере программирования задач линейной алгебры.
Задание
Вычислить заданное матричное выражение, в котором значения констант, размеры матриц и их содержимое определяются пользователем.
Операции транспонирования, вычисления суммы, произведения на матрицу и на константу реализовать в виде пользовательских функций. Рекомендуется также реализовать ввод и вывод матриц в виде пользовательских функций.
Необходимо контролировать размерность матриц при осуществлении матричных операций. В случае, если размерность матриц не позволяет провести операцию, выдавать сообщение об ошибке.
Программа должна представлять результаты вычислений (в том числе промежуточных) в виде матрицы со значениями, выровненными по столбцам, например:
4 5 5
345 54 2
-102 4 85
Разработать 2 варианта программы:
Хранить матрицу в виде одномерного массива
Хранить матрицу в виде массива указателей
Алгоритм
- Декларировать матрицы (двойные указатели) A, B, C, BC, finish.
- Ввести размер строк и столбцов матрицы A.
- Создать матрицу заданного размера, передав A адрес начала.
- Ввести данные в ячейки матрицы A, пройдя с помощью циклов по всем строкам и столбцам.
- Умножить все ячейки матрицы A на определённое число, введённое пользователей.
- Вывести на экран получившийся результат.
- Ввести размер строк и столбцов матрицы B.
- Создать матрицу заданного размера, передав B адрес начала.
- Ввести данные в ячейки матрицы B, пройдя с помощью циклов по всем строкам и столбцам.
- Ввести размер строк и столбцов матрицы C.
- Создать матрицу заданного размера, передав C адрес начала.
- Ввести данные в ячейки матрицы C, пройдя с помощью циклов по всем строкам и столбцам.
- Создать новую матрицу matrix, у которой количество строк равно количеству столбцов матрицы C.
- Транспонировать матрицу C, записав получившиеся значения в матрицу matrix.
- Передать матрице C адрес matrix.
- Вывести на экран матрицу C.
- Проверить, возможно ли умножить матрицу B на матрицу C. Если нет - завершить программу, выдав сообщение об ошибке.
- Создать новую матрицу Matrix, количество строк которой равно количеству строк матрицы B, а количество столбцов - количеству столбцов матрицы C.
- Умножить матрицу B на матрицу C, записав получившийся результат в матрицу Matrix.
- Освободить ранее выделившуюся на матрицы B и C память.
- Передать матрице BC адрес Matrix.
- Проверить, возможно ли сложить матрицы A и BC. Если нет - завершить программу, выдав сообщение об ошибке.
- Создать новую матрицу amount, количество строк которой равно количеству строк матрицы A(или BC), а количество столбцов - количеству столбцов матрицы A(или BC).
- Сложить матрицы A и BC, записав получившийся результат в матрицу amount.
- Освободить ранее выделившуюся на матрицы A и BC память.
- Передать матрице finish адрес amount.
- Освободить ранее выделившуюся на матрицу finish память.
- Завершить программу.
Текст программы
В виде массива указателей
#include "stdafx.h"
#include
#include
#include
#include
float** creation_matrix(int string, int columns){
...