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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переставить элементы массива, следующие после максимального, в С++ http://www.cyberforum.ru/cpp-beginners/thread1739145.html
Привет, кто сможет помочь с контрольной? Переставить элементы массива, следующие после максимального, в С++
C++ Исправить ошибку и скомпилировать typedef array<1,100,real> tmx; typedef matrix<1,100, 1,100,real> tmy; tmx ma, mx; tmy my; real an, ak, da, xn, dx,b, c, d, eps, int_; integer k, n, n1, er, km; real pwr(real x)//Возведение в... http://www.cyberforum.ru/cpp-beginners/thread1739142.html
C++ Не получается выделелить памать в CASE для динамического массива и объявить его размер
Всем привет. Появилась некоторая проблема с выделением памяти для динамического массива и с объявлением его размера. И еще вопрос: как сделать так, чтобы размер динамического массива брался из файла?...
Написать сортировки по имени и по дате C++
Помогите написать два этих метода пожалуйста SortByName() i SortByDate() #include <iostream> #include <string> using namespace std; int main() { }
C++ Ошибка: Используется потенциально неинициализированная локальная переменная http://www.cyberforum.ru/cpp-beginners/thread1739091.html
Ошибка: Используется потенциально неинициализированная локальная переменная prev - 48 строчка, как исправить? код: #include <iostream> #include <locale> using namespace std; //Структура...
C++ Массивы: в чём я ошибся, указывает на оператор (+=), что не так? Вот программный код написанный мной: #include <iostream> #include <cmath> using namespace std; void main () { int c,a,b,i; const int n=4; int C={1,2,3,4}; cout<<"C+=2:"<<C+=2; подробнее

Показать сообщение отдельно
Beeeeetlejjuice
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 35

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

19.05.2016, 11:10. Просмотров 126. Ответов 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;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru