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

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

Войти
Регистрация
Восстановить пароль
 
Кристюня
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 32
#1

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

05.02.2014, 13:44. Просмотров 753. Ответов 4
Метки нет (Все метки)

Первую часть решила кое как, как записать числа из главной диагонали в отдельный массив и перемножить матрицу на матрицу?

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. Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 13:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу (C++):

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

Произведение вектора на матрицу и матрицы на вектор - C++
произведение вектора на матрицу и матрицы на вектор в чем отличие? код ясен: берем: int z=2;//строки int...

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

C++ Двумерные массивы(матрицы),работа с элементами главной диагонали - C++
Уважаемые коллеги, прошу помощи в решении парочки задачек,уж мозг в Си не &quot;варит&quot;,не клеится с его структурой... 1.В каждой строке...

Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали - C++
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали.

Обменять элементы главной диагонали заданной квадратной матрицы, с элементами её первого столбца - C++
Составить программу обмена в матрице A элементов, находящихся на главной диагонали, с соответствующими элементами первого столбца.

4
Ded_Vasilij
231 / 213 / 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 минут
а потом нужны выделить память под матрицу результата, и умножить вектор на матрицу
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5097 / 1535 / 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];
}
1
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
05.02.2014, 15:02 #4
Ev[G]eN, старался помочь человеку не сбивая его с собственной мысли, а вообще - Вы правы, нужно сразу писать правильно, тогда и вопросов меньше будет.
0
Кристюня
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");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 08:28
Привет! Вот еще темы с ответами:

Найти вектор, который составлен из наибольших членов матрицы до главной диагонали включительно - C++
Народ помогите решить в си++ 2010 и в MS Excel вот эту задачу. Задание выдает преподаватель каждому студенту индивидуально из ниже...

Вывести строку матрицы, в которой элемент, стоящий на главной диагонале, максимальный среди элементов главной диагонали. - C++
Дано квадратную матрицу порядка N. Вывести строку матрицы, в которой элемент, стоящий на главной диагонале, максимальный среди элементов...

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

Обменять элементы массива на главной диагонали с элементами на побочной диагонали - C++
Всем привет. Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от 0 до 100. Обменять местами...


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

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

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