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

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

Войти
Регистрация
Восстановить пароль
 
kaztennis
3 / 3 / 0
Регистрация: 28.09.2013
Сообщений: 93
#1

не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор - C++

07.10.2013, 16:11. Просмотров 446. Ответов 5
Метки нет (Все метки)

Всем привет. вобщем задача моя такова , что я задал готовое количество элементов в матрицу и в вектор, а программа умножает ее. сами задаем количество элементов, а программа в случайном образе выдает нам эти элменты и умножает. моя задача, изменить программу, убрав датчик случайного подбора Random и сделать так чтоб каждый элемент выбирали сами мы,.. спасибо)
вот код:
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
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
// Функция для опредления элементов матрицы и вектора
void DummyDataInitialization (double* pMatrix, double* pVector, int Size) {
int i, j; // задаем переменные
for (i=0; i<Size; i++) {
pVector[i] = 1;
for (j=0; j<Size; j++)
pMatrix[i*Size+j] = i;
}
}
// Функция для случайного определения элементов матрицы и вектора
void RandomDataInitialization(double* pMatrix, double* pVector, int Size) {
int i, j; // задаем переменные
srand(unsigned(clock()));
for (i=0; i<Size; i++) {
pVector[i] = rand()/double(1000);
for (j=0; j<Size; j++)
pMatrix[i*Size+j] = rand()/double(1000); }
}
// Функция для заполнения и определения элементов обьекта
void ProcessInitialization (double* &pMatrix, double* &pVector,
double* &pResult, int &Size) {
// размер созданной матрицы и вектора определяется:
do {
printf("\n Vvedite razmer sozdannogo objekta: ");
scanf("%d", &Size);
printf("\n Vvedite razmer objecta = %d\n", Size);
if (Size <= 0)
printf("\n Razmer objecta doljen byt` bolshe 0!\n");
}
while (Size <= 0);
// Распределение памяти
pMatrix = new double [Size*Size];
pVector = new double [Size];
pResult = new double [Size];
// Определение матрицы и элементов вектора
DummyDataInitialization(pMatrix, pVector, Size);
}
// Функция для форматирования выведенной матрицы
void PrintMatrix (double* pMatrix, int RowCount, int ColCount) {
int i, j; // задаем переменные
for (i=0; i<RowCount; i++) {
for (j=0; j<ColCount; j++)
printf("%7.4f ", pMatrix[i*RowCount+j]);
printf("\n");
}
}
// Функция для форматирования выведенного вектора
void PrintVector (double* pVector, int Size) {
int i;
for (i=0; i<Size; i++)
printf("%7.4f ", pVector[i]);
}
// Функция для матричо-векторного умножения
void ResultCalculation(double* pMatrix, double* pVector, double* pResult,
int Size) {
int i, j; // задаем переменные
for (i=0; i<Size; i++) {
pResult[i] = 0;
for (j=0; j<Size; j++)
pResult[i] += pMatrix[i*Size+j]*pVector[j];
}
}
// Функция для завершения процесса
void ProcessTermination(double* pMatrix,double* pVector,double* pResult) {
delete [] pMatrix;
delete [] pVector;
delete [] pResult;
}
 
void main() {
double* pMatrix; // Первый аргумент - созданная матрица
double* pVector; // Второй аргумент - созданный вектор
double* pResult; // Результат векторно-матричного умножения
int Size; // Размер созданных матрицы и вектора
time_t start, finish;
double duration;
printf("Series matrix-vector program \n");
// Распределение памяти и определение элементов обьекта
ProcessInitialization(pMatrix, pVector, pResult, Size);
// Вывод матрицы и вектора
printf ("sozdannaya matrica \n");
PrintMatrix(pMatrix, Size, Size);
printf("sozdannyi vector \n");
PrintVector(pVector, Size);
// Матрично-векторное умножение
start = clock();
ResultCalculation(pMatrix, pVector, pResult, Size);
finish = clock();
duration = (finish-start)/double(CLOCKS_PER_SEC);
// Выведение результата вектора
printf ("\n rezultat vectora: \n");
PrintVector(pResult, Size);
// Время потраченное на матрично-векторное умножение
printf("\n Time of execution: %f\n", duration);
// Завершение процесса
ProcessTermination(pMatrix, pVector, pResult);
getch();
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2013, 16:11     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор
Посмотрите здесь:

Функция умножения матрицы на вектор - C++
Как это дело делается я понимаю. Функцию написал, но с передачей значений путаюсь. void mvm( int **matr, int *vect, int *res) ...

Написать программу умножения квадраной матрицы на вектор - C++
Дана квадратная матрица А размером n*n и вектор а = (a1, a2, ..., an). Написать программу вычисления вектора b = A*a. Добавлено через...

Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу - C++
Первую часть решила кое как, как записать числа из главной диагонали в отдельный массив и перемножить матрицу на матрицу? #include...

В матрице Т размером nxn переставить столбцы так, чтоб на побочной диагонали элементы матрицы были упорядочены - C++
В матрице Т размером nxn переставить столбцы так, чтоб на побочной диагонали элементы матрицы были упорядочены по возрастанию.

Нужно найти максимальный элемент в первой строке матрицы и переставить столбцы так, чтоб он оказался в первом столбце - C++
Дана квадратная матрица порядка n. Нужно найти максимальный элемент в первой строке и переставить столбцы так, чтоб он оказался в первом...

Файловый ввод: как сделать так, чтобы пользователь вводил имя выходного файла в командной строке? - C++
Добрый день форумчане. Подскажите пожалуйста как сделать так чтобы пользователь вводил Имя выходного файла в командной строке. ...

Не могу определить так, чтоб если массив, присвоить нулями - C++
Передаю массив по указателю (int* M) и если размер переданного массива меньше чем m_current, то присвоить остальных нулями. ...

Как сделать так чтоб работало? Что с компилятором? - C++
ошибка: No such file or directory #include &lt;iostream&gt; using namespace std; int main() {const int n=15; int i;double...

С++ не могу сам сделать - C++
Помогите пожалуйста сделать программы на С++ сам не могу сделать потому, что два месяца учебы пропустил, и теперь не знаю как эти программы...

Как сделать так чтобы персонаж в игре двигался сам - C++
На данный момент я учусь писать игры на C++. Я сделал так чтобы персонаж двигался клавишами, а как сделать так чтобы он сам двигался в...

Как сделать так , чтоб возвращались первоначальные значения массива, перед работой с функцией - C++
В моей задаче программа работает с одним массивом на всём протяжении, как сделать так чтоб перед каждой функцией массив возвращался в...

МАСИИВЫ, найти сумму каждого рядка матрицы та наименьшую из них! не могу другую часть программы сделать.. - C++
подскажите как сравнить суммы!! вот мой код int main() { int const n=5; int const m=7; int mas; int sum,minsum; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
07.10.2013, 17:55     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор #2
Цитата Сообщение от kaztennis Посмотреть сообщение
void RandomDataInitialization(double* pMatrix, double* pVector, int Size) {
int i, j; // задаем переменные
srand(unsigned(clock()));
for (i=0; i<Size; i++) {
pVector[i] = rand()/double(1000);
for (j=0; j<Size; j++)
pMatrix[i*Size+j] = rand()/double(1000); }
C++
1
2
3
4
5
6
int i, j; // задаем переменные
srand(unsigned(clock()));
for (i=0; i<Size; i++) {
scanf("%d", pVector[i]);
for (j=0; j<Size; j++)
scanf("%d", pMatrix[i*Size+j]); }
kaztennis
3 / 3 / 0
Регистрация: 28.09.2013
Сообщений: 93
07.10.2013, 18:04  [ТС]     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор #3
Цитата Сообщение от WilFred Посмотреть сообщение
C++
1
2
3
4
5
6
int i, j; // задаем переменные
srand(unsigned(clock()));
for (i=0; i<Size; i++) {
scanf("%d", pVector[i]);
for (j=0; j<Size; j++)
scanf("%d", pMatrix[i*Size+j]); }
здравствуйте, если вставим эту функцию то будем вводить элементы сами?? ничего в самом корпусе задачи не надо менять??
WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
07.10.2013, 18:11     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор #4
kaztennis, вроде бы нет, попробуйте, проверьте)
kaztennis
3 / 3 / 0
Регистрация: 28.09.2013
Сообщений: 93
07.10.2013, 18:24  [ТС]     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор #5
Цитата Сообщение от WilFred Посмотреть сообщение
kaztennis, вроде бы нет, попробуйте, проверьте)

а куда ее вставлять? тело задачи или на функцию)))
WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
07.10.2013, 18:41     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор #6
kaztennis,
Цитата Сообщение от WilFred Посмотреть сообщение
void RandomDataInitialization(double* pMatrix, double* pVector, int Size)
вместо кода этой функции...
Yandex
Объявления
07.10.2013, 18:41     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор
Ответ Создать тему
Опции темы

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