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

Проверить является ли матрица треугольной - C++

Восстановить пароль Регистрация
 
Chaow
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 15
31.08.2013, 13:43     Проверить является ли матрица треугольной #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
#include <conio.h>
#include <iostream>
#include <vector>
#include <ctime> 
 
using namespace std;
 
int main()
{
    srand(time(NULL)); // Инициализируем генератор случайных чисел. 
    int n = 0; 
    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() % 10; // Каждый элемент случайному числу от 0 до 9
            cout << a[i][j] << " "; // Вывести элементы на консоль
        }
        cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
     }
     vector<int> v;//лучше писать без размера. Если он будет пустой то он будет забит нулями по умолчанию.
     for (int i = 0; i < n; i++)
    {
        int sum(0);
        for (int j = 0; j < n; j++)
             sum += a[i][j];// сумма элементов в каждой строке
             v.push_back(sum);// заносим значение в контейнер      
     }
      cout<<"\n";
      for ( int i = 0;  i < v.size() ; i++ )
            cout<<v[i]<<" ";
      cout<<"\n";
    // Удаление массива
    for (int i = 0; i < n; i++)
    {
        delete[]a[i]; // Удаляем каждый элемент
    }
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 13:43     Проверить является ли матрица треугольной
Посмотрите здесь:

Проверить является ли квадратная матрица " магическим квадратом" C++
Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) C++
Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) C++
C++ Проверить, является ли матрица A(n,n) диагональной, единичной или нулевой
C++ Проверить, является ли введенная с клавиатуры квадратная матрица "Магическим квадратом"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
31.08.2013, 14:23     Проверить является ли матрица треугольной #2
Проверить на наличие нулей ниже и выше главной диагонали. Там же проверить ниже побочной и соответственно выше оной диагонали.

К примеру:
3 2 1
0 2 1
0 0 1

Думаю дальше мысль сами развить сможете
Chaow
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 15
31.08.2013, 14:39  [ТС]     Проверить является ли матрица треугольной #3
Математически это понятно. Меня интересует как это проверить и в какую часть кода нужно это писать
Rias
Сообщений: n/a
31.08.2013, 21:26     Проверить является ли матрица треугольной #4
Проверка относительно главной диагонали:
C++
1
2
3
4
5
6
7
8
9
10
11
int k=0,s=0,o=0;
for (int i = 1; i < n; i++)
     for(int j = 0; j < i; j++)
     {
          if(a[i][j]==0) s++; //проверяет элементы ниже гл. диагонали
          if(a[n-i-1][n-j-1]==0) o++; //проверяет элементы выше гл. диагонали
          k++; //кол-во элементов выше или ниже гл. диагонали (оно одинаковое т.к. матрица квадратная)
      }
     
if ((s==k)||(o==k)) cout<<"Треугольная";
        else cout<<"Не треугольная";
Yandex
Объявления
31.08.2013, 21:26     Проверить является ли матрица треугольной
Ответ Создать тему
Опции темы

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