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

Сформировать вектор из элементов диагонали матрицы - C++

Восстановить пароль Регистрация
 
dkii
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 101
07.09.2014, 14:40     Сформировать вектор из элементов диагонали матрицы #1
Помогите, пожалуйста, Определить произведение элементов матрицы A(MxN), лежащих на главной диагонали и сформировать из них вектор С.
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
#include "iostream"
#include "math.h"
#include "iomanip"
 
using namespace std;
 
void sp(double**, int, int, int*);
 
int main()
{
locale::global(locale("Russian"));
double **a;
int i, j, n, m,s;
 
cout << "Введите размер матрицы А:\n";
cout << "Рядов n=";
cin >> n ;
cout << "Колонок m=";
cin >> m;
a = new double*[n]; 
for(i=0; i<n; i++) 
a[i] = new double[m]; 
cout << "\nВведите элементы массива A:\n"; 
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
cout << "Введите a[" << i << "][" << j << "]: ";
cin >> a[i][j];
}
cout << "\nМассив A:\n";
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw (9) << a[i][j];
cout << endl;
}
 
sp (a, n, m, &s);
 
cout<<"\nПроизвидение элементов на главной диагонале \nматрицы = "<<s;
 
for(i=0; i<n; i++) 
delete [] a[i];
delete []a;
a = NULL;
cin>>n;
return 0;
 
}
void sp (double **a,int n,int m,int *s)
{
    int i, j;
    *s=1;
    for (i = 0; i < min(n, m); i++) {  //n - количество строк, m - количество столбцов.
    *s*= a[i][i];
}
}
Добавлено через 17 часов 2 минуты
ап1
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2014, 14:40     Сформировать вектор из элементов диагонали матрицы
Посмотрите здесь:

Сформировать вектор, состоящий из максимальных элементов каждого столбца (строки) матрицы C++
Сформировать вектор из наименьших значений элементов строк данной матрицы C++
C++ Сформировать вектор, состоящий из максимальных элементов каждого столбца (строки) матрицы
Сформировать вектор d из крупнейших отрицательных элементов соответствующих столбцов матрицы C++
Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dkii
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 101
08.09.2014, 16:16  [ТС]     Сформировать вектор из элементов диагонали матрицы #2
fg2
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
08.09.2014, 16:20     Сформировать вектор из элементов диагонали матрицы #3
О, ужас. Ану-ка, скажите, какое свойство у индексов элементов главной диагонали матрицы?

Добавлено через 2 минуты
з.ы. код даже не смотрела. Отвечаю чисто на Ваш вопрос.
dkii
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 101
08.09.2014, 18:17  [ТС]     Сформировать вектор из элементов диагонали матрицы #4
И все же не могу понять, как сформировать вектор из элементов матрицы.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
08.09.2014, 18:36     Сформировать вектор из элементов диагонали матрицы #5
Цитата Сообщение от dkii Посмотреть сообщение
вектор из элементов матрицы
По контексту следует, что из элементов диагонали:
C++
1
2
3
4
5
6
int size=min(m,n);
double b=new double[size];
for (i = 0; i < size; i++)
    b[i]=a[i][i];
...
delete[] b;
dkii
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 101
08.09.2014, 20:18  [ТС]     Сформировать вектор из элементов диагонали матрицы #6
Ошибку выдает
cannot convert from 'double *' to 'double'
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2014, 01:11     Сформировать вектор из элементов диагонали матрицы
Еще ссылки по теме:

Сформировать вектор b, в котором элементы вычисляются как произведение элементов строк исходной матрицы N*M C++
Сложить модули элементов строк матрицы и сформировать из них вектор V C++
C++ Сформировать вектор из сумм элементов строк матрицы и найти их среднее геомтрическое

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

Или воспользуйтесь поиском по форуму:
SpringBear
 Аватар для SpringBear
0 / 0 / 1
Регистрация: 07.09.2014
Сообщений: 3
09.09.2014, 01:11     Сформировать вектор из элементов диагонали матрицы #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int **allocMatrix(int rows, int cols)
{
    int **matrix = new int*[rows];
    for (int i = 0; i < rows; i++) {
        matrix[i] = new int[cols];
    }
    return matrix;
}
 
void generateMatrix(int **matrix, int rows, int cols)
{
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            matrix[i][j] = rand() % 20;
        }
    }
}
 
void printMatrix(int **matrix, int rows, int cols)
{
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            std::cout << std::setw(3) << matrix[i][j];
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}
 
int gettingElementsFromDiag(int **matrix, int *array, int rows)
{
    int op = 1;
    for (int i = 0; i < rows; i++) {
        op *= matrix[i][i];
        array[i] = matrix[i][i];
    }
    return op;
}
 
void printArray(int *array, int rows)
{
    for (int i = 0; i < rows; i++) {
        std::cout << std::setw(3) << array[i];
    }
    std::cout << std::endl;
}
 
void deallocMatrix(int **matrix, int rows)
{
    for (int i = 0; i < rows; i++)
        delete [] matrix[i];
    delete [] matrix;
}
 
int main()
{
    int rows, cols;
    std::cout << "Enter rows and cols" << std::endl;
    std::cin >> rows >> cols;
    int **matrix = allocMatrix(rows, cols);
    generateMatrix(matrix, rows, cols);
    printMatrix(matrix, rows, cols);
    int *array = new int[rows];
    int op = gettingElementsFromDiag(matrix, array, rows);
    std::cout << "Op = " << op << std::endl;
    printArray(array, rows);
    delete [] array;
    return 0;
}
Добавлено через 12 минут
Забыл дописать "deallocMatrix(matrix, rows)" перед "delete [] array;".
Yandex
Объявления
09.09.2014, 01:11     Сформировать вектор из элементов диагонали матрицы
Ответ Создать тему
Опции темы

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