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

Написать функцию которая будет умножать любую строку на уже заданную матрицу - C++

Восстановить пароль Регистрация
 
Beeeeetlejjuice
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 18
26.05.2016, 09:57     Написать функцию которая будет умножать любую строку на уже заданную матрицу #1
Написать функцию которая будет умножать любую строку на уже заданную матрицу
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2016, 09:57     Написать функцию которая будет умножать любую строку на уже заданную матрицу
Посмотрите здесь:

C++ Описать функцию, которая изменяет заданную строку следующим образом
Написать функцию которая выводит на экран строку символов C++
Написать функцию, которая формирует строку, состоящую только из цифр, входящих в исходную строку C++
Написать функцию, которая переворачивает строку C++
Написать функцию, которая заполняет квадратную матрицу числами по указанному правилу C++
C++ Написать программу, которая будет зеркально выводить введенную строку
C++ Создать независимую функцию, которая будет умножать две матрицы
Написать функцию, которая переворачивает строку C++
Написать функцию, которая будет проверять является ли аргумент точным квадратом C++
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy C++
C++ Как написать функцию, которая будет менять имя созданного объекта
Написать программу, которая будет генерировать квадратную матрицу рандомно C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Remuless
25 / 25 / 12
Регистрация: 07.06.2015
Сообщений: 125
26.05.2016, 10:42     Написать функцию которая будет умножать любую строку на уже заданную матрицу #2
делайте более конкретные формулировки задачи. по каким правилам строка умножается на матрицу, что должно быть в результате и все остальное, сопутствующее задаче. сейчас это похоже "Иди туда, не знаю куда, найди то, не знаю что".
Beeeeetlejjuice
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 18
26.05.2016, 10:56  [ТС]     Написать функцию которая будет умножать любую строку на уже заданную матрицу #3
Цитата Сообщение от Remuless Посмотреть сообщение
делайте более конкретные формулировки задачи. по каким правилам строка умножается на матрицу, что должно быть в результате и все остальное, сопутствующее задаче. сейчас это похоже "Иди туда, не знаю куда, найди то, не знаю что".
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
#include "Matrixes.h"
#include <math.h>
#include <QApplication>
#include <iostream>
#include <iomanip>
 
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;
    }
}
вот код, надо матрицу C умножить на вектор из 3 чисел(любой, можно рандомный) и вывести результат
Remuless
25 / 25 / 12
Регистрация: 07.06.2015
Сообщений: 125
26.05.2016, 11:27     Написать функцию которая будет умножать любую строку на уже заданную матрицу #4
Beeeeetlejjuice, вопрос был в другом, ну да ладно, более-менее ясно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int* umn (int** C, int* v, int N)
{
    int* ans = new int[N];
    for (int i = 0; i < N; i++)
    {
        ans[i] = 0;
        for (int j = 0; j < N; j++)
        {
            ans[i]+=C[i][j] * v[j];
        }
    }
    return ans;
}
я бы добавил вот такую функцию, которая создавала бы из нужной вам матрицы и нужного вектора новый вектор.
Yandex
Объявления
26.05.2016, 11:27     Написать функцию которая будет умножать любую строку на уже заданную матрицу
Ответ Создать тему
Опции темы

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