Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Beeeeetlejjuice
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 35
#1

Умножить вектор строку на вектор матрицу - C++

19.05.2016, 11:10. Просмотров 117. Ответов 0
Метки нет (Все метки)

Вот код, подключены QT5 библиотеки, нужно написать функцию для умножения вектор строку B на матрицу C

C++ (Qt)
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
#include "Matrixes.h"
#include <math.h>
#include <QApplication>
 
QTextCodec *pCodec = QTextCodec::codecForName("Windows-1251"); //1
using namespace BigMatrix;
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    try
    {
        QString FileName = QFileDialog::getOpenFileName(NULL,
            Rus("Открытие файла с исходными данными"), "",
            Rus("Текстовый файл(*.txt)"), NULL, QFileDialog::Option::ReadOnly); //2
        if (FileName.isEmpty())
            throw Error(Rus("Передумали работать"), Error::ErrOK);
        QFile File(FileName);  //3
        File.open(QIODevice::ReadOnly);
        if (!File.isOpen()) throw
            Error(Rus("Файл исходных данных ") + FileName +
            Rus(" не открылся!"), Error::ErrFileOpen);
        Stream Stream(&File); //4
        Matrix a(Stream);
        Stream.readLine();
        a.Show();
 
        int N = a.RowCount();
        int M = a.ColumnCount();
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < N; j++)
            {
                if (a(i,j) <= a(j,i))
                {
                    double B = a(i,j);
                    a(i,j) = a(j,i);
                    a(j,i) = B;
                }
                else a(i,j) = sqrt((abs(sin(a(j,i)))));
            }
        }
 
        double P = 1.0;
        for (int j = 1; j < N; j++)
        {
            double D = 0.0;
            for (int i = 0; i < N; i++)
            {
                D += sqrt(a(i,j));
            }
            P *= D / N;
        }
     
    Matrix C(N, N);
     
 
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < N; j = j + 2)
                C(i,j) = exp(sin(P * a(i,j)));
            for (int j = 1; j < N; j = j + 2)
                C(i,j) = sqrt(P * (abs(cos(a(i,j)))));
        }
        C.Show();
 
        do
        {
            FileName = QFileDialog::getSaveFileName(NULL,
                Rus("Сохранение результатов расчета"), "", Rus("Текстовый файл(*.txt)"));
            if (FileName.isEmpty())
                if (QMessageBox::question(NULL, Rus("Файл не выбран"), Rus("Не хотите сохранять?")) == QMessageBox::Yes)
                    return 0; //5
                else
                    continue;
            File.setFileName(FileName);  //6
            File.open(QIODevice::WriteOnly); //7
            if (!File.isOpen())
            {
                QMessageBox::critical(NULL, Rus("Ошибка!"), Rus("Файл вывода результатов ") +
                    FileName + Rus(" не открылся!"));
                continue;
            }
        } while (FileName.isEmpty());
        (~a).Save(Stream); //8
        C.Save(Stream);
    }
    catch (Error Err)
    {
        Err.showMsg();
        return Err.GetError();
    }
    catch (std::bad_alloc)
    {
        QMessageBox::critical(NULL, Rus("Ошибка!"),
            Rus("Недостаточно памяти для создания объекта"));
        return Error::NoMemory;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2016, 11:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Умножить вектор строку на вектор матрицу (C++):

Умножить вектор-строку на матрицу - C++
Есть вектор-строка размера 1*6, её надо умножить на матрицу размером 6*27. Не понимаю как сделать такое умножение. Сколько не пробовал не...

Умножить матрицу квадратную на вектор - C++
уже не знаю, что делать до ужаса глупейшая ошибка, из-за чего весь алгоритм к чертям:( for (int i = 1; i &lt; size; i++) for (int...

Умножить квадратную матрицу на вектор - C++
У кого-нибудь не завалялась функция умножения квадратной матрицы на вектор? Результатом должен быть вектор.

Найти обратную матрицу и умножить ее на вектор - C++
Очень нужна помощь для нахождения обратной матрицы на С++. Дело в том что мне нужно реализовать такую задачу: найти обратную матрицу и...

Умножить матрицу 10х10 на вектор из 10 элементов - C++
дана матрица:10*10.умножить ее на вектор 10.помогите пожалуйста...очень нужно

в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А - C++
2. в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А заранее...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2016, 11:10
Привет! Вот еще темы с ответами:

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Непонятно условие задачи: Вывести исходную матрицу, преобразованную матрицу и вектор Х. - C++
Здравствуйте, помогите пожалуйста понять, что от меня хотят в этом условии: &quot;Строки вещественной матрицы упорядочить по возрастанию ее...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru