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

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

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

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

26.05.2016, 09:57. Просмотров 88. Ответов 3
Метки нет (Все метки)

Написать функцию которая будет умножать любую строку на уже заданную матрицу
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2016, 09:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию которая будет умножать любую строку на уже заданную матрицу (C++):

Создать независимую функцию, которая будет умножать две матрицы - C++
Добрый день всем!:) Такой вопрос. Создала свой класс "двухмерной" матрицы. Хочу создать независимую функцию, которая будет умножать две...

Описать функцию, которая изменяет заданную строку следующим образом - C++
задача:Описать функцию, которая изменяет заданную строку следующим образом: сначала записывает все элементы с четными индексами, а затем...

Написать программу, которая будет генерировать квадратную матрицу рандомно - C++
Необходимо написать программу которая будет генерировать квадратную матрицур рандомно размерности от 3 до 5(рандомно), значения...

Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy - C++
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy

Написать функцию, которая формирует строку, состоящую только из цифр, входящих в исходную строку - C++
Нужна помощь задачу нужно написать в консольном режиме Написать и протестировать функцию, которая по заданной строке str формирует...

Написать программу, которая будет зеркально выводить введенную строку - C++
Доброго времени суток! Стоит задача: написать программу, которая будет зеркально выводить введенную строку. Условие: нельзя...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Remuless
25 / 25 / 12
Регистрация: 07.06.2015
Сообщений: 127
26.05.2016, 10:42 #2
делайте более конкретные формулировки задачи. по каким правилам строка умножается на матрицу, что должно быть в результате и все остальное, сопутствующее задаче. сейчас это похоже "Иди туда, не знаю куда, найди то, не знаю что".
0
Beeeeetlejjuice
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 35
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 чисел(любой, можно рандомный) и вывести результат
0
Remuless
25 / 25 / 12
Регистрация: 07.06.2015
Сообщений: 127
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;
}
я бы добавил вот такую функцию, которая создавала бы из нужной вам матрицы и нужного вектора новый вектор.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2016, 11:27
Привет! Вот еще темы с ответами:

Написать функцию, которая будет проверять является ли аргумент точным квадратом - C++
Мне нужно написать функцию которая будет выдавать точный квадрат числа,и компилятор выдаёт такую ошибку : Ошибка 1 error C2668: sqrt:...

Как написать функцию, которая будет менять имя созданного объекта - C++
Функция changeClas изменяет класс ученика,подскажите,пожалуйста,как написать подобную функцию,которая будет менять имя созданного объекта,...

Написать функцию, которая переворачивает строку - C++
1) Напишите функцию, которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний...

Написать функцию, которая переворачивает строку - C++
Написать функцию, которая переворачивает строку. Заголовок функции: void reverseStr (char *s); Написать программу, которая принимает от...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.05.2016, 11:27
Ответ Создать тему
Опции темы

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