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

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

Восстановить пароль Регистрация
 
Кристюня
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 32
05.02.2014, 13:44     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу #1
Первую часть решила кое как, как записать числа из главной диагонали в отдельный массив и перемножить матрицу на матрицу?

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
#include "stdafx.h"
#include <iostream>
#include <ctime> // в ней функция time
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    setlocale(LC_CTYPE, "Russian");
    srand(time(NULL)); // Инициализируем генератор случайных чисел. 
    int n = 0; 
    cout<<"Введите размерность матрицы от 5 до 25    ";
    
    cin >> n; // Считываем с клавиатуры n
    int **a = new int* [n]; // Создаем массив указателей
    
    for (int i = 0; i < n; i++)
    {
        a[i] = new int [n]; // Создаем элементы
    }
    // А дальше работа как с обычным массивом. 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 100; // Каждый элемент случайному числу от 0 до 99
            cout << a[i][j] << " "; // Вывести элементы на консольку
        }
        cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
    }
    cout<<"Элементы главной диагонали :  ";
 for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i==j)
            
                
            cout<<a[i][j]<<" ";
            }
        }
    // Удаление массива
    for (int i = 0; i < n; i++)
    {
        delete[]a[i]; // Удаляем каждый элемент
    }
    delete [] a; // А потом массив
    system("pause");
}
Добавлено через 1 час 45 минут
Полностью задание.
Пользователь вводит с клавиатуры размерность квадратной матрицы M (5≤M≤25). Матрица заполняется случайными числами от 0 до 99. Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 13:44     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу
Посмотрите здесь:

C++ Двумерные массивы(матрицы),работа с элементами главной диагонали C++
Отсортировать диагонали матрицы,расположенные выше главной, по убыванию элементов, а диагонали матрицы, расположенные ниже главной, по возрастанию C++
Вывести строку матрицы, в которой элемент, стоящий на главной диагонале, максимальный среди элементов главной диагонали. C++
C++ Заполнение главной диагонали матрицы максимальными элементами
C++ Найти вектор, который составлен из наибольших членов матрицы до главной диагонали включительно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
05.02.2014, 14:49     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу #2
Кристюня, все хорошо, но только нужно не просто вывести главную диагональ на экран, а записать ее в массив, который впоследствии будет умножаться на матрицу. Т.е примерно так
C++
1
2
3
4
5
6
7
8
int* diag = new int[n];
for (int i = 0; i < n; i++)   {
    for (int j = 0; j < n; j++) {
            if (i==j){ 
                  diag[i] = matrix[i][j];
            }
        }
}
а потом

Добавлено через 14 минут
а потом нужны выделить память под матрицу результата, и умножить вектор на матрицу
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
05.02.2014, 14:51     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу #3
Ded_Vasilij, почему не?
C++
1
2
3
for (int i = 0; i < n; i++) {
     diag[i] = matrix[i][i];
}
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
05.02.2014, 15:02     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу #4
Ev[G]eN, старался помочь человеку не сбивая его с собственной мысли, а вообще - Вы правы, нужно сразу писать правильно, тогда и вопросов меньше будет.
Кристюня
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 32
06.02.2014, 08:28  [ТС]     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу #5
что-то я не совсем поняла, при такой записи кода выдает ошибку "необработанное прерывание"
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
// b.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <ctime> // в ней функция time
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    setlocale(LC_CTYPE, "Russian");
    srand(time(NULL)); // Инициализируем генератор случайных чисел. 
    int n = 0; 
    cout<<"Введите размерность матрицы от 5 до 25    ";
    
    cin >> n; // Считываем с клавиатуры n
    int **a = new int* [n]; // Создаем массив указателей
    int* diag = new int[n];
    int **matrix = new int* [n];
    for (int i = 0; i < n; i++)
    {
        a[i] = new int [n]; // Создаем элементы
 
    }
    // А дальше работа как с обычным массивом. 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 100; // Каждый элемент случайному числу от 0 до 99
            cout << a[i][j] << " "; // Вывести элементы на консольку
        }
        cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
    }
    //cout<<"Элементы главной диагонали :  ";
 for (int i = 0; i < n; i++) {
     diag[i] = matrix[i][i];
     cout<<matrix[i][i];
}
//for (int i = 0; i < n; i++)   {
//       diag[i] = matrix[i][i];
//        
//}
    // Удаление массива
    for (int i = 0; i < n; i++)
    {
        delete[]a[i]; // Удаляем каждый элемент
    }
    delete [] a; // А потом массив
    system("pause");
}
Yandex
Объявления
06.02.2014, 08:28     Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу
Ответ Создать тему
Опции темы

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