1

Тема: допоможіть з сортуванням в матриці

Характеристикою стовпця прямокутної матриці цілих чисел розмірністю (k  n) назвемо суму модулів його від’ємних непарних елементів.
1.    Переставляючи стовпці заданої матриці, розташувати їх відповідно до зростання характеристик (оформити у вигляді void-функції).
2.    Знайти суму елементів в тих стовпцях, які містять хоч би один від’ємний елемент (оформити у вигляді int-функції).

#include <iostream>
#include <iomanip>

using namespace std;

void Create(int** a, const int rowCount, const int colCount,
            const int Low, const int High, int i, int j)
{
    a[i][j] = Low + rand() % (High - Low + 1);
    if (j < colCount - 1)
        Create(a, rowCount, colCount, Low, High, i, j + 1);
    else
    if (i < rowCount - 1)
        Create(a, rowCount, colCount, Low, High, i + 1, 0);
}

void Input(int** a, const int rowCount, const int colCount, int i, int j)
{
    cout << "a[" << i << "][" << j << "] = ";
    cin >> a[i][j];
    if (j < colCount - 1)
        Input(a, rowCount, colCount, i, j + 1);
    else
    if (i < rowCount - 1)
    {
        cout << endl;
        Input(a, rowCount, colCount, i + 1, 0);
    }
    else
        cout << endl;
}

void Print(int** a, const int rowCount, const int colCount, int i, int j)
{
    cout << setw(4) << a[i][j];
    if (j < colCount - 1)
        Print(a, rowCount, colCount, i, j + 1);
    else
    if (i < rowCount - 1)
    {
        cout << endl;
        Print(a, rowCount, colCount, i + 1, 0);
    }
    else
        cout << endl << endl;
}
int Character(int** a, const int n, const int i, int j, int sum)
{
    if (a[i][j] < 0 && a[i][j] % 2 != 0)
        sum += a[i][j];
    if (j < n - 1)
        Character(a, n, i, j + 1, sum);
    else
        return sum;
}
void Change(int** a, const int col1, const int col2, const int rowCount, int tmp, int i)
{
    tmp = a[i][col1];
    a[i][col1] = a[i][col2];
    a[i][col2] = tmp;
    if (i < rowCount - 1)
        Change(a, col1, col2, rowCount, tmp, i + 1);
}
void Replace(int** a, const int k, const int n, int i0, int i1)
{
    if (Character(a, n, i0, 0, 0) < Character(a, n, i1, 0, 0))
        Change(a, i0, i1, n, 0, 0);
    if (i0 < k - 1)
        Replace(a, k, n, i0 + 1, i1);
    else
    if (i1 < k - 1)
        Replace(a, k, n, i0, i1 + 1);
}

int main()
{
    srand((unsigned)time(NULL));
    int Low = -10;
    int High = 30;
    int k, n;
    cout << "rowCount = "; cin >> k;
    cout << "colCount = "; cin >> n;
    int** a = new int* [k];
    for (int i = 0; i < k; i++)
        a[i] = new int[n];

    Create(a, k, n, Low, High, 0, 0);
    //Input(a, k, n, 0, 0);
    cout << "a[" << k << "][" << n << "] = " << endl;
    Print(a, k, n, 0, 0);
    Replace(a, k, n, 0, 0);
    cout << "Матриця, розсташована відповідно до зростання характеристик " << endl;
    cout << "a[" << k << "][" << n << "] = " << endl;
    Print(a, k, n, 0, 0);
    for (int i = 0; i < k; i++)
        delete[] a[i];
    delete[] a;
    return 0;
}

2

Re: допоможіть з сортуванням в матриці

ви забули написати з чим вам потрібна допомога

3

Re: допоможіть з сортуванням в матриці

з сортуванням

4 Востаннє редагувалося mamkin haker (23.11.2021 14:58:21)

Re: допоможіть з сортуванням в матриці

magnet19 написав:

з сортуванням

з чим ДОПОМОГТИ а не ЩО ЗРОБИТИ ЗА ВАС
хочаб загуглити спробуйте ( сортування масивів С++ )

5

Re: допоможіть з сортуванням в матриці

mamkin haker написав:
magnet19 написав:

з сортуванням

з чим ДОПОМОГТИ а не ЩО ЗРОБИТИ ЗА ВАС

не знаю в чому проблема. При сортуванні не відбувається переміщення стовпців

#include <iostream>
#include <iomanip>

using namespace std;

void Create(int** a, const int rowCount, const int colCount,
            const int Low, const int High, int i, int j)
{
    a[i][j] = Low + rand() % (High - Low + 1);
    if (j < colCount - 1)
        Create(a, rowCount, colCount, Low, High, i, j + 1);
    else
    if (i < rowCount - 1)
        Create(a, rowCount, colCount, Low, High, i + 1, 0);
}
void Print(int** a, const int rowCount, const int colCount, int i, int j)
{
    cout << setw(4) << a[i][j];
    if (j < colCount - 1)
        Print(a, rowCount, colCount, i, j + 1);
    else
    if (i < rowCount - 1)
    {
        cout << endl;
        Print(a, rowCount, colCount, i + 1, 0);
    }
    else
        cout << endl << endl;
}
int Character(int** a, const int k, const int i, int j, int sum)
{
    if (a[i][j] < 0 && a[i][j] % 2 != 0)
        sum += a[i][j];
    if (i < k - 1)
        Character(a, k, i + 1, j,sum);
    else
        return sum;
}
void Change(int** a, const int col1, const int col2, const int rowCount, int tmp, int i)
{
    tmp = a[i][col1];
    a[i][col1] = a[i][col2];
    a[i][col2] = tmp;
if (i < rowCount - 1)
Change(a, col1, col2, rowCount, tmp, i + 1);
}
void Replace(int** a, const int k, const int n, int j0, int j1)
{
    if (Character(a, k, 0, j0, 0) < Character(a, k, 0, j1, 0))
        Change(a, j0, j1, k, 0, 0);
    if (j0 < n - 1)
        Replace(a, k, n, j0 + 1, j1);
    else
    if (j1 < n - 1)
        Replace(a, k, n, j0, j1 + 1);
}

int main()
{
    srand((unsigned)time(NULL));
    int Low = -10;
    int High = 30;
    int k, n;
    cout << "rowCount = "; cin >> k;
    cout << "colCount = "; cin >> n;
    int** a = new int* [k];
    for (int i = 0; i < k; i++)
        a[i] = new int[n];

    Create(a, k, n, Low, High, 0, 0);
    cout << "a[" << k << "][" << n << "] = " << endl;
    Print(a, k, n, 0, 0);
    Replace(a, k, n, 0, 0);
    cout << "Матриця, розсташована відповідно до зростання характеристик " << endl;
    cout << "a[" << k << "][" << n << "] = " << endl;
    Print(a, k, n, 0, 0);
    for (int i = 0; i < k; i++)
        delete[] a[i];
    delete[] a;
    return 0;
}

6 Востаннє редагувалося mamkin haker (23.11.2021 15:19:26)

Re: допоможіть з сортуванням в матриці

??? вони ж переміщуються, і не потрібно кожен раз код кидати
https://replace.org.ua/uploads/images/11470/bc200742317d52dc25e33324e6b862ab.png

7

Re: допоможіть з сортуванням в матриці

mamkin haker написав:

??? вони ж переміщуються, і не потрібно кожен раз код кидати
https://replace.org.ua/uploads/images/11470/bc200742317d52dc25e33324e6b862ab.png

я вже знайшов помилку (там просто зверзу умова убла)
тільки не зліться на мене
там в Character не було модуля

sum += abs(a[i][j])
Подякували: Arete1