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

Действие с матрицами и векторами

11.11.2017, 11:55. Показов 554. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, посмотрите пожайлуста мой алгоритм на правильность реализации данного задания, если есть ошибки поправьте его.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
//Консольное приложение
#include <iostream>
#include <iomanip>
#include <cstddef>
#include <cstdlib>
using namespace std;
//Прототип функции для ввода вектора X
double* inputv(int n);
//Прототип функции для вывода вектора на монитор X
void outputv(double * a, int n);
//Прототип функции для ввода матрицы a
double** inputm(int n, int m);
//Прототип функции для вывода матрицы a на монитор
void outputm(double ** a, int n, int m);
//Прототип функции для разности матриц a и b
double ** raznost(double** a, double ** b, int n, int m);
//Прототип функции для умножения матрицы на вектор и их суммирование
double * ymnozh(double** с, int n, int m, double * x);
//Главная функция
void main()
{   //Руссификация
    setlocale(LC_ALL, "Russian");
    //Объявление указателя на массив указателей и переменных
    double ** a, ** b;
    double **c;
    double * x,* z;
    int n, m;
    //Ввод количество строк и столбов матрицы
    cout << "\n Ввести количество строк и столбцов матрицы: ";
    cin >> n >> m;
    //Ввод матрицы a
    cout << "\n Ввести матрицу a = ";
    a = inputm(n, m);
    //Вывод матрицы a
    cout << "\n Матрица a = ";
    outputm(a, n, m);
    //Ввод матрицы b
    cout << "\n Ввести матрицу b =";
    b = inputm(n, m);
    //Вывод матрицы b
    cout << "\n Матрица b = ";
    outputm(b, n, m);
    //Ввод размера вектора n
    cout << "\n Ввести размер вектoра x = \n";
    cin >> n;
    //Ввод вектора X
    cout << "\n Ввести через пробел n координат вектора x: \n";
    x = inputv(n);
    //Вывод вектора X
    cout << "\n ***Вектор x:*** \n";
    outputv(x, n);
    //Обращение к функции для умножении матрицы на вектор
    z = ymnozh(a, n, m, x);
    cout << "\n Произведение матрицы на вектор и их суммирование = \n";
    //Вывод полученной матрицы
    outputv(z, n);
    //Обращение к функции для разности матриц a и b
    c = raznost(a, b, n, m);
    cout << "\n Разность матриц с = \n";
    //Вывод полученной матрицы
    outputm(c, n, m);
    cout << endl;
}
//Функция для ввода вектора X в оперативную память 
double* inputv(int n)
{//Объявление переменной
    int i;
    //Объявление указателя
    double * a;
    //Выделение оперативной памяти под вектор
    a = new double[n];
    if (a == NULL) {
        cout << "\n Не хватило оперативной памяти";
        exit(1);
    }
    //Ввод
    for (i = 0; i < n; i++)
        cin >> a[i];
    return a;
}
//Функция для вывода вектора X на монитор
void outputv(double * a, int n)
{//Объявление переменных
    int i;
    //Вывод
    for (i = 0; i<n; i++)
    {
        if (i % 5 == 0) cout << "\n";
        cout << setw(10) << a[i];
    }
}
//Функция для ввода матрицы a в оперативную память
double** inputm(int n, int m)
{//Объявление переменной
    int i, j;
    //Добавление указателя на массив указателей
    double ** a;
    //Выделение оперативной памяти под указателей на строки
    a = new double *[n];
    if (a == NULL) {
        cout << "\n не хватило оперативной памяти";
        exit(1);
    }
    //Выделяем оперативную память под каждый элемент строки
    for (i = 0; i<n; i++)
    {
        a[i] = new double[m];
        if (a[i] == NULL) {
            cout << "\n не хватило оперативной памяти";
            exit(1);
        }
    }
    //Ввод матрицы a
    for (i = 0; i < n; i++)
    {
        cout << "\n ввести через пробел " << i << "/n";
        for (j = 0; j < m; j++)
            cin >> a[i][j];
    }
    return a;
}
//Функция для вывода матрицы на монитор
void outputm(double ** a, int n, int m)
{//Объявление переменных
    int i, j;
    //Вывод
    for (i = 0; i<n; i++)
    {
        cout << endl;
        for (j = 0; j<m; j++)
            cout << setw(10) << a[i][j];
    }
}
//Функция для для разности матриц
double ** raznost(double** a, double** b, int n, int m)
{   //Объявление переменной
    double ** c;
    int i, j;
    //Выделение озу под указатели на строки матрицы
    c = new double*[n];
    if (c == NULL) {
        cout << "\n не хватило озу";
        exit(1);
    }
    //Выделение ОЗУ под столбцы
    for (i = 0; i < m; i++)
        c[i] = new double[m];
    if (c[i] == NULL) {
        cout << "\n не хватило озу";
        exit(1);
    }
    //Вычисление
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            c[i][j] = a[i][j] - b[i][j];
    }
    return c;
}
//Функция для умножения матрицы на вектор и их суммирование
double * ymnozh(double** с, int n, int m, double * x)
{   //Объявление переменной
    double * z;
    int i, j;
    //Выделение озу под указатели на строки матрицы
    z = new double[n];
    if (z == NULL) {
        cout << "\n не хватило озу";
        exit(1);
    }
    //Вычисление
    for (i = 0; i < n; i++)
    {
        z[i] = 0;
        for (j = 0; j < m; j++)
            z[i] += z[i] + с[i][j] * x[j];
    }
    return z;
}
Миниатюры
Действие с матрицами и векторами  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2017, 11:55
Ответы с готовыми решениями:

Операции с векторами и матрицами
а) Написать программу, которая выполняет следующую операцию : Q = X +3*Y Где X, Y, Q – векторы...

Написать программу в С++ (действия с файлами, матрицами, векторами)
Вводятся элементы матрицы(из файла, m - кол-во строк, n - кол-во столбцов) построчно. Вычислить:...

нужно создать программу для работу с векторами и матрицами
нужно создать программу для работу с векторами и матрицами, Для векторов нужно сделать введения...

ПрограмМа с векторами и матрицами
1 задавая самому вектор(массив) чтобы формировались матрицы 3х3 и в них нарезались по строкам...

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

Действия с векторами и матрицами
задачи нужно решить через подпрограммы. На вышке мы ещё не добрались до векторов, так что мне...

Операции с векторами и матрицами
пожалуйста, помогите 1. Ввод с клавиатуры векторов и матриц. Ввести: – произвольную...

Работа с матрицами и векторами c# WPF
Помогите исправить код, суть задания в том, что нужно задать матрицу и умножить ее на вектор, в...

Работа с векторами и матрицами - отловить ошибку
Приветствую! Делаю лабораторную работу на тему полиморфизма. Дана задача: 1) Создать классы...

Выполнить действие с векторами
помогите , не могу понять как сделать задание . Даны векторы A, B и переменная Х. Вектор, имеющий...

Параллельное программирование, действия над векторами и матрицами
Здравствуйте, кто может помочь с кодом? Язык С. (С параллельным программированием) . Задание:...


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

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