Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 14
1

Операции с матрицами

23.12.2016, 14:59. Показов 1339. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста закрыть последнюю лабораторную, предыдущие кое-как сам смог. Вот задание:

2. Дана целочисленная квадратная матрица. Определить:
• номер первой из строк, содержащих хотя бы один положительный элемент;
• упорядочить по возрастанию столбец, сумма элементов которого минимальна.
• упорядочить элементы массива по возрастанию методом выбора.
 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2016, 14:59
Ответы с готовыми решениями:

Класс: Разработать класс для работы с матрицами(операции над матрицами)...
Добрый вечер, хочу попросить о помощи с отловом проблемы. Сама задача: разработать класс для...

Операции с матрицами
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; struct matrix...

Операции с векторами и матрицами
а) Написать программу, которая выполняет следующую операцию : Q = X +3*Y Где X, Y, Q – векторы...

Операции с матрицами (+,-,*,/,det)
Помогите разобраться с программой: #include <iostream> #include <stdlib.h> #include<math.h> ...

2
Форумчанин
Эксперт CЭксперт С++
8166 / 5014 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
23.12.2016, 15:33 2
Лучший ответ Сообщение было отмечено Neko Muso как решение

Решение

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iomanip>
#include <iostream>
 
const int M = 3, N = 3;
 
void Swap(int &a, int &b)
{
    int tmp = a;
    a = b;
    b = tmp;
}
 
// номер первой из строк, содержащих хотя бы один положительный элемент
int GetRowWithPos(const int arr[M][N])
{
    for (int i=0; i < M; i++)
        for (int j=0; j < N; j++)
            if (arr[i][j] > 0)
                return i + 1; // номер больше индекса на 1
    return -1; // флаг того, что таких строк нет
}
 
void SortColumn(int arr[M][N], const int column)
{
    // пузырьковая сортировка
    for (int i=0; i < M; i++)
        for (int j=M - 1; j > i; j--)
            if (arr[j][column] < arr[i][column])
                Swap(arr[i][column], arr[j][column]);
}
 
// вычислить сумму указанного столбца
int SumColumn(const int arr[M][N], const int column)
{
    int sum = 0;
    for (int i=0; i < M; i++)
        sum += arr[i][column];
    return sum;
}
 
int GetColumnWithMinSum(const int arr[M][N])
{
    int column = 0, sum = SumColumn(arr, 0);
    for (int i=1; i < M; i++)
    {
        const int curSum = SumColumn(arr, i);
        if (curSum < sum)
        {
            column = i;
            sum = curSum;
        }
    }
    return column;
}
 
void Print(const int arr[M][N])
{
    for (int i=0; i < M; i++)
    {
        for (int j=0; j < N; j++)
            std::cout << std::setw(3) << arr[i][j] << " ";
        std::cout << std::endl;
    }
    std::cout << std::endl;
}
 
int& GetElementFromIndex(int arr[M][N], const int index)
{
    return arr[index / N][index % N];
}
 
// упорядочить элементы массива по возрастанию методом выбора
void SelectionSort(int arr[M][N])
{
    for (int i=0; i < M*N - 1; i++)
    {
        int minIndex = i;
        for (int j=i + 1; j < M*N; j++)
            if (GetElementFromIndex(arr, j) < GetElementFromIndex(arr, minIndex))
                minIndex = j;
 
        if (minIndex != i)
            Swap(GetElementFromIndex(arr, i), GetElementFromIndex(arr, minIndex));
    }
}
 
int main()
{
    int A[M][N] = {{-1, -2, -1}, {2, 0, 0}, {3, -3, 1}};
 
    Print(A);
 
    const int numRowWithPos = GetRowWithPos(A);
    if (numRowWithPos == -1)
        std::cout << "No positive elements\n";
    else
        std::cout << "First row with positive element: " << numRowWithPos << std::endl;
 
    // упорядочить по возрастанию столбец, сумма элементов которого минимальна.
    SortColumn(A, GetColumnWithMinSum(A));
    Print(A);
 
    SelectionSort(A);
    Print(A);
}
1
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 14
26.12.2016, 11:58  [ТС] 3
Спасибо огромное, не поленились
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2016, 11:58

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Матрица, операции над матрицами
Выручите кодом на следующую программу, пожалуйста. Матрицу размерностью 9 на 6 из случайных целых...

Арифмитические операции над динамическими матрицами
Есть задания и решение, ток в готовой проге ничего не понятно что и откуда, прошу объяснить ...

Произвести математические операции над матрицами
Помогите пожалуйста! Дано квадратную матрицу А порядка n и вектор b с n елементами. Получить: ...

Реализовать ввод, вывод и простейшие операции с матрицами
дана такая задача: Реализовать ввод, вывод и простейшие операции с матрицами (сложение, вычитание,...

Операции над матрицами-сложение, вычитание, умножение на число
Здравствуйте,помогите пожалуйста по такой проблемке-в С++ надо создать матрицу и действия над...

Использовать для работы с матрицами указатели и операции вида *p++, p++
Здравствуйте. снова обращаюсь к вам. Задание такое: Использовать для работы с матрицами указатели и...


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

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

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