Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.12.2017
Сообщений: 1
1

Модуль работы с матрицами: универсализация

17.03.2019, 12:15. Показов 1189. Ответов 0

Author24 — интернет-сервис помощи студентам
Добрый день,
Задача состоит в следующем: написать модуль для работы с матрицами (Умножение,сложение,поиск обратной и т.д.),при этом самым первым из пунктов было:
Реализовать пользовательский тип данных “матрица” в виде структуры, представляя матрицу в виде
(a) двумерного статического массива;
(b) двумерного динамического массива (одномерный массив ячеек и одномерный массив адресов строк);
(c) одномерного динамического массива.


Это было сделано:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//Модуль работы с матрицами
//Автор: Григорьев Д.А.
#ifndef MATRIXLIB_H_INCLUDED
#define MATRIXLIB_H_INCLUDED
 
#define asize 10
 
 
//Структура,организующая матрицу с помощью двухмерного статического массива с размерами rows*cols
struct Matrix_Static
{
    double Mtx[asize][asize];
    int rows;
    int cols;
};
//Структура,организующая матрицу с помощью одномерного динамического массива с rows*cols элементами
struct Matrix_Lin
{
    double *Mtx;
    int rows;
    int cols;
};
//Структура,организующая матрицу с помощью динамического массива динамических массивов указателей с rows*cols элементами
struct Matrix_Dyn
{
    double **Mtx;
    int rows;
    int cols;
};
Более того,для каждого из представлений уже создал функции инициализации,заполнения,удаления (освобождения памяти), доступа к элементам (константного и неконстантного). Собственно,далее нужно было написать остальные функции обработки. Пока я написал только для одномерного динамического массива. Например,две функции:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//Функция,умножающая i-ую строку матрицы А на число с
void Matrix_Multi_RowNumber (struct Matrix_Lin *A,int i,double c)
{
    if(A->Mtx)
    {
        for(int j=0;j<A->cols;j++)
        {
            *(Matrix_Access(A,i,j))*=c;
        }
    }
}
 
//Функция,переставляющая i1-ую и i2-ую строки матрицы А между собой
void Matrix_RowPermute (struct Matrix_Lin *A,int i1,int i2)
{
    if(A->Mtx)
    {
        double buf;
        for(int j=0;j<A->cols;j++)
        {
            buf=*(Matrix_Access(A,i1,j));
            *(Matrix_Access(A,i1,j))=*(Matrix_Access(A,i2,j));
            *(Matrix_Access(A,i2,j))=buf;
        }
    }
}
Вопрос: можно ли как-то избежать дублирования всех функций для остальных представлений и как это реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2019, 12:15
Ответы с готовыми решениями:

Написать модуль для работы с матрицами
Здравствуйте, срочно нужна помощь. Нужно создать проект в Lazarus. Суть такая: задаются A -...

Создать пользовательский модуль для работы с матрицами
Создать модуль, содержащий процедуры и/или функции: − объединение двух матриц вертикально («одна...

Модули. Создать модуль для работы с матрицами 3 на 3
Создать модуль для работы с матрицами 3 на 3 Он должен содержать 3 подпрограммы: Нахождение...

Есть ли в стандартной библиотеке модуль (пакет?) для работы с матрицами?
Пытаюсь найти в стандартной библиотеке модуль (пакет?) для работы с матрицами. Нарыл какой-то...

0
17.03.2019, 12:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2019, 12:15
Помогаю со студенческими работами здесь

Разработать модуль работы с одномерными матрицами - нахождение минимального и максимального значения
Пожалуйсто помогите. Я где-то писала уже этот вопрос наверно случайно потом сама его удалила не...

Класс: Разработать класс для работы с матрицами(операции над матрицами)...
Добрый вечер, хочу попросить о помощи с отловом проблемы. Сама задача: разработать класс для...

Универсализация драйвера мыши
В продолжение предыдущих тем. Я успешно сделал драйвер мыши и его юзерспейс часть, в том числе с...

Создать модуль, содержащий подпрограммы для осуществления операций над матрицами
A) Создать модуль, содержащий подпрограммы для осуществления операций над двумерными массивами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru