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

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

Войти
Регистрация
Восстановить пароль
 
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
#1

Привести заданную квадратную матрицу к виду - C++

10.12.2013, 20:43. Просмотров 460. Ответов 12
Метки нет (Все метки)

Привести заданную квадратную матрицу к такому виду, чтобы все элементы ниже главной диагонали были нулевыми.
В универе нас программированию не учат, поступал с физикой, а требуют программировать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 20:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Привести заданную квадратную матрицу к виду (C++):

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

Привести матрицу 3 на 3 к диагональному виду - C++
Всем добрый вечер, начал изучать С++. Хочу привести матрицу 3 на 3 к диагональному виду методом Гаусса, но почему-то считает неправильно....

Задача: привести матрицу к треугольному виду - C++
Блин, я никак не разберусь, может тут кто знает? Задание: Дана квадратная матрица размера m*n. С помощью допустимых преобразований...

Как привести матрицу к треугольному виду - C++
Нужно привести матрицу к треугольному виду, можно написать прогу , а то какие нашел не работают ни черта

Как привести матрицу к треугольному виду по методу гауса? - C++
Может у кого есть прога? Нужна срочно!

Привести матрицу к треугольному виду Гауссом (не могу найти работающий код) - C++
Нужен код для приведения матрицы к треугольному виду (матрица статическая, целочисленная). Пробовал гуглить, в том числе и тут....

12
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 21:01 #2
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    const int arraySize = 5;
    int arrayOfIntegers[ arraySize ][ arraySize ] = { 0 };
 
    for ( int i = 0; i < arraySize; i++ )
    {
         for ( int j = i; j < arraySize; j++ )
         {
              arrayOfIntegers[ i ][ j ] = 1 + rand() % 50;
         }
    }
 
    for ( int row = 0; row < arraySize; row++ )
    {
         for ( int column = 0; column < arraySize; column++ )
         {
             cout << arrayOfIntegers[ row ][ column ] << " ";
         }
         
         cout << endl;
     }
 
     return 0;
}
1
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
10.12.2013, 21:32  [ТС] #3
Спасибо!
Но вот смотрите, получается, что матрица уже задана, но есть ли возможность сделать так, чтобы размеры квадратной матрицы задавались мною в консоли, через присвоение значения переменной с помощью cin >> ?

Добавлено через 13 минут
Хотя не, спасибо, все и так здорово
0
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 21:36 #4
Fantasmaforia, размер матрицы должен быть const. А конст инициализируется один раз при создании. Хотите плавающую размерность, используйте динамическое выделение памяти
C++
1
2
3
4
5
6
7
8
....
cin >> n;
int ** arrayOfIntegersPtr = new int * [ n ];
 
for ( int i = 0; i < n; i ++ )
{
    arrayOfIntegers[ i ] = new int [ n ];
}
1
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
10.12.2013, 21:41 #5
Это называется метод Гаусса.
1.Начинаете с последней строки. Умножаете ее на такой коэффициент, что числа в первом столбце
у двух последних строк одинаковые.
2.Вычитаете из последней предпоследнюю.
3.Так делаете со всеми строками. Получите нули в первом столбце.
4.Повторяете для следующих столбцов.
1
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
10.12.2013, 22:01  [ТС] #6
А можете подробнее написать, куда именно этот код вставлять? Потому что я когда пытаюсь его вставить и компилировать, то пишет, что идентификатор arrayOfIntegers[ i ] не определен
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
10.12.2013, 22:11 #7
Во втором посте написано объявление
C++
1
    int arrayOfIntegers[ arraySize ][ arraySize ] = { 0 };
1
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
10.12.2013, 22:25  [ТС] #8
он выдает ошибку, не определяет
error C2065: arrayOfIntegers: необъявленный идентификатор
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
int main()
{
    int arraySize;
 
    cin >> arraySize;
int ** arrayOfIntegersPtr = new int * [ arraySize ];
 
for ( int i = 0; i < arraySize; i ++ )
{
    arrayOfIntegers[ i ] = new int [ arraySize ];
}
 
    for ( int i = 0; i < arraySize; i++ )
    {
         for ( int j = i; j < arraySize; j++ )
         {
              arrayOfIntegers[ i ][ j ] = 1 + rand() % 200;
         }
    }
 
    for ( int row = 0; row < arraySize; row++ )
    {
         for ( int column = 0; column < arraySize; column++ )
         {
             cout << arrayOfIntegers[ row ][ column ] << " ";
         }
         
         cout << endl;
     }
 
     return 0;
}
0
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 22:29 #9
Fantasmaforia, arrayOfIntegersPtr, поправьте везде, пожалуйста.
1
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
10.12.2013, 22:39  [ТС] #10
Теперь, после открытия консоли и ввода размеров, он просто выдает ошибку, что программа прекратила свою работу
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
int main()
{
     int arraySize;
     cout << "vvedite razmer \n";
    cin >> arraySize;
int ** arrayOfIntegers = new int * [ arraySize ];
 
for ( int i = 0; i < arraySize; i ++ )
{
    arrayOfIntegers[ i ] = new int [ arraySize ];
 
 
    for ( int i = 0; i < arraySize; i++ )
    {
         for ( int j = i; j < arraySize; j++ )
         {
              arrayOfIntegers[ i ][ j ] = 1 + rand() % 10;
         }
    }
 
    for ( int row = 0; row < arraySize; row++ )
    {
         for ( int column = 0; column < arraySize; column++ )
         {
             cout << arrayOfIntegers[ row ][ column ] << " ";
         }
         
         cout << endl;
     }
}
     return 0;
}
0
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 22:55 #11
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
int main()
{
     int arraySize;
 
     cout << "vvedite razmer \n";
     cin >> arraySize;
 
     int ** arrayOfIntegers = new int * [ arraySize ];
 
     for ( int i = 0; i < arraySize; i++ )
    {
         arrayOfIntegers[ i ] = new int [ arraySize ];
 
         for ( int j = 0; j < arraySize; j++ )
         {
              arrayOfIntegers[ i ][ j ] = 0;
         }
     }
 
 
    for ( int i = 0; i < arraySize; i++ )
    {
         for ( int j = i; j < arraySize; j++ )
         {
              arrayOfIntegers[ i ][ j ] = 1 + rand() % 10;
         }
    }
 
    for ( int row = 0; row < arraySize; row++ )
    {
         for ( int column = 0; column < arraySize; column++ )
         {
             cout << arrayOfIntegers[ row ][ column ] << " ";
         }
         
         cout << endl;
    }
 
    for ( int i = 0; i < arraySize; i++ )
    {
        delete [] arrayOfIntegers[ i ];
    }
 
     delete [] arrayOfIntegers;
 
     return 0;
}
Добавлено через 9 минут
Ну и в завершение напомню, чтобы вы не забыли подключить все неоходимые бибилотеки, которые вы можете найти в первом примере. А для того, чтобы каждый раз массив заполнялся по-новому, добавьте в самом начале функцию следующего вида:
C++
1
srand( time( 0 ) );
1
Fantasmaforia
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 48
10.12.2013, 23:18  [ТС] #12
Спасибо огромное!
0
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 23:22 #13
Оффтоп
Fantasmaforia, не за что, обращайтесь!
0
10.12.2013, 23:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2013, 23:22
Привет! Вот еще темы с ответами:

Заполнить заданную квадратную матрицу по спирали числами 0 и 1 - C++
Всем привет! Поставили передо мной следующую задачу: Написать программу, которая заполняет матрицу NxN (1 &lt;= N &lt;= 50) числами 1 и 0 по...

Как привести матрицу к верхнему треугольному виду? С++ (Имеется код нахождения нижней треуг. матрицы) - C++
Нахождение нижней треуг. матрицы: for (i=0, k=nn-1; i&lt;nn&amp;&amp;k&gt;=0; i++, k--) for (j=0; j&lt;i;...

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

Зеркально отразить заданную квадратную матрицу относительно побочной диагонали - C++
Задана матрица A размерности n x n. Зеркально отразить ее относительно побочной диагонали.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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