0 / 0 / 0
Регистрация: 16.01.2018
Сообщений: 1
1

Исключить из матрицы столбец, в котором расположен минимальный элемент главной диагонали

16.01.2018, 22:21. Показов 1407. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вечер добрый, может кто нибудь помочь с даннной задачей?
Дана целочисленная квадратная матрица размером n*m. исключать из нее столбец, в котором расположен минимальный элемент главной диагонали.
Заранее спасибо всем кто поможет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2018, 22:21
Ответы с готовыми решениями:

Исключить из матрицы строку и столбец на пересечении которых расположен максимальный элемент главной диагонали
Задана квадратная матрица действительных чисел A(n, n). Исключить из неё строку и столбец, на...

Исключить из матрицы столбец, в котором расположен минимальный элемент главной диагонали
Дана целочисленная квадратная матрица размером n*m. Написать программу, позволяющую исключать из...

Исключить столбец, в котором расположен минимальный элемент главной диагонали (подправить программу)
Составить программу с использованием процедуры и функции Дана целочисленная квадратная матрица...

Исключить из матрицы строку и столбец, на пересечении которых расположен минимальный элемент главной диагонали
написал программу для исключения из матрицы строку и столбец, на пересечении которых расположен...

3
21 / 21 / 20
Регистрация: 05.12.2017
Сообщений: 124
16.01.2018, 23:47 2
Цитата Сообщение от Trixy Посмотреть сообщение
квадратная матрица размером n*m
Надеюсь, что, если матрица квадратная, то наверняка n = m.
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
#include<ctime>
#include<iostream>
using namespace std;
int N, M;
int main()
{
    setlocale(LC_ALL,"Russian"); 
    srand(time(NULL));
    cout << "Введите N: ";
    cin >> N;
 
    int** matrix = new int *[N]; //создаем динамическую матрицу размером NxN, которая и будет нашим квадратом
    for (int i = 0; i < N; i++)
    matrix[i] = new int[N]; 
 
        for (int i=0; i<N; i++)
            {for (int j=0; j<N; j++)
                {
                matrix[i][j]= rand() % 21 - 10;
                cout.width(4);
                cout<<matrix[i][j];
                } cout<<endl;
            }
        
        int min = matrix[0][0];
        int h = 0;
        for (int i=0; i<N; i++)
        {
            if (min > matrix[i][i])
            {
                min = matrix[i][i];
                h = i;
            }
        }
    
 
 
        for (int i=0; i<N; i++)
            {for (int j=0; j<N; j++)
                {
                if (j != h)
                {
                cout.width(4);
                cout<<matrix[i][j];
                }
                } cout<<endl;
            }
 
    system ("pause");
    return 0;
    }
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
18.01.2018, 00:02 3
Trixy, здравствуйте! Вот еще вариант:

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
#include <iostream>
 
using namespace std;
 
void deleteCol(int** a, int k, int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = k; j < n - 1; j++)
        {
            a[i][j] = a[i][j+1];
        }
    }
}
 
int main()
{
    int n, min, index;
    cout << "Enter a matrix size:" << endl;
    cout << "n = ";
    cin >> n;
    int** a = new int*[n];
    for (int i = 0; i < n; i++)
    {
        a[i] = new int[n];
    }
    cout << "Enter a matrix:" << endl;
    min = INT_MAX;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        if (a[i][i] < min)
        {
            min = a[i][i];
            index = i;
        }
    }
    deleteCol(a, index, n);
    cout << "Matrix after delete:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - 1; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    for (int i = 0; i < n; i++)
    {
        delete [] a[i];
    }
    delete [] a;
    system("pause");
    return 0;
}
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
18.01.2018, 00:37 4
Цитата Сообщение от Fixer_84 Посмотреть сообщение
C++
1
for (int j = 0; j < n - 1; j++)
Фактически столбец не удалён, вы просто его не выводите. Размерность остаётся прежней

Я бы так сделал. Столбец будет физически удаляться из матрицы
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
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
 
void DeleteCol(std::vector <std::vector<int>> &a, std::size_t min) {
    if (min != a.size() - 1)
        for (std::size_t j = min; j < a.size() - 1; j++)
            for (std::size_t i = 0; i < a.size(); i++)
                std::swap(a[i][j], a[i][j + 1]);
    for (auto &r : a) r.pop_back();
}
 
int main()
{
    std::default_random_engine gen{ std::random_device()() };
    std::uniform_int_distribution<> dist(-20, 20);
    std::size_t n = 4, min = 0;
    std::vector <std::vector<int>> Matrix(n, std::vector<int>(n));
    std::cout << "Matrix:\n";
    for (auto &Row : Matrix) {
        std::generate(Row.begin(), Row.end(), [&dist, &gen] { return dist(gen); });
        std::copy(Row.cbegin(), Row.cend(), std::ostream_iterator <int>(std::cout, "\t"));
        std::cout << '\n';
    }
    for (std::size_t i = 1; i < n; i++) if (Matrix[i][i] < Matrix[min][min]) min = i;
    DeleteCol(Matrix, min);
    std::cout << "\nNew matrix:\n";
    for (auto &Row : Matrix) {
        std::copy(Row.cbegin(), Row.cend(), std::ostream_iterator <int>(std::cout, "\t"));
        std::cout << '\n';
    }
    system("pause");
}
0
18.01.2018, 00:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2018, 00:37
Помогаю со студенческими работами здесь

Задана квадратная матрица порядка n. Исключить из нее строку и столбец, на пересечении которых расположен минимальный элемент главной диагонали
Задана квадратная матрица порядка n. Исключить из нее строку и столбец, на пересечении которых...

Исключить строку и столбец матрицы, на пересечении которых расположен максимальный элемент главной диагонали
Задана квадратная матрица. Исключить из неё строку и столбец, на пересечении которых расположен...

Найти номер столбца, в котором расположен минимальный элемент главной диагонали матрицы
Дана целочисленная квадратная матрица А(n,n). Найти номер столбца, в котором расположен минимальный...

Исключить из нее строку и столбец,на пересечении которых расположен максимальный элемент главной диагонали.
Двумерные массивы. Задание 2. В каждом варианте дан двумерный массив A из N строк и М...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru