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

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

Восстановить пароль Регистрация
 
kaztennis
3 / 3 / 0
Регистрация: 28.09.2013
Сообщений: 93
07.10.2013, 16:11     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор #1
Всем привет. вобщем задача моя такова , что я задал готовое количество элементов в матрицу и в вектор, а программа умножает ее. сами задаем количество элементов, а программа в случайном образе выдает нам эти элменты и умножает. моя задача, изменить программу, убрав датчик случайного подбора 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++
Матрицы. Получить вектор X, равный P-й строке матрицы, и вектор Y, равный Q-му столбцу матрицы C++
Нужно найти максимальный элемент в первой строке матрицы и переставить столбцы так, чтоб он оказался в первом столбце C++
Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля C++
C++ Реализовать умножение матрицы на матрицу и матрицы на вектор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WilFred
 Аватар для 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
 Аватар для 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
 Аватар для 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     не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор
Ответ Создать тему
Опции темы

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