Тема: Упоpядкувати елементи матpиці

Упоpядкувати елементи матpиці A=(a[ i ][ j ]), i=1,2,...,n; j=1,2,...,m, за
зpостанням значень. Якщо кількість пеpеглянутих елементів не пеpевищує эаданої
величини k, знайти кількість паpних елементів, у пpотивному pазі - кількість непаpних
елементів.

2

Re: Упоpядкувати елементи матpиці

Дякую за завдання, але на цьому форумі люди повинні задавати запитання, а не ділитись своїми завданнями. Якісь питання маєте?

3

Re: Упоpядкувати елементи матpиці

На цьому форумі заведено показувати те, що ви зробили вже. Зробіть своє завдання хоча б з помилками, і ми вам поможемо.

4

Re: Упоpядкувати елементи матpиці

#include <iostream>

using namespace std;

int main() {
    const int rows = 4;
    const int cols = 4;
    int arr[rows][cols], i, j, t;
    
    cout << "Enter matrix:" << endl;
    for(i = 0; i < rows; i++) {
       for(j = 0; j < cols; j++) {
            cin >> arr[ i ][ j ];
        }
    }
    
    cout << "Matrix:" << endl;
    for(i = 0; i < rows; i++) {
        for(j = 0; j < cols; j++)
        {
            cout << arr[ i ][ j ] << " ";
        }
        cout << endl;
    }
    cout << "\v";
    
    
    for(i = 0; i < rows; i++) {
        for(j = 0; j < cols; j++) {
             if(arr[ i ][ j ] > arr[ i ][ j+1 ]) {
                   t=arr[ i ][ j ]; 
                   arr[ i ][ j ]=arr[ i ][ j+1 ];
                   arr[ i ][ j+1 ]=t;

               }
            
        }
    }
    
    cout << "New matrix:" << endl;
    for(i = 0; i < rows; i++) {
        for(j = 0; j < cols; j++) {
            cout << arr[ i ][ j ] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

5

Re: Упоpядкувати елементи матpиці

Та частина, де йде сортування. Зараз програма робить один прохід сортування, після чого виводить результат (навіть якщо матриця недосортована). Цю частину треба повторювати доти, доки сортування не закінчиться остаточно. Тобто, всю цю частину треба обгорнути у ще один цикл. Щоб перевірити, чи сортування завершилось, можна, наприклад, зробити додаткову змінну, яка використовуватиметься як умова циклу — в неї перед проходженням сортування записувати 0, а всередині циклу, коли робиться перестановка, записувати туди одиницю — таким чином, якщо при черговому проходженні не відбулося жодної перестановки, це означає, що матриця вже відсортована, і можна виводити результат.
Зробіть це.

6

Re: Упоpядкувати елементи матpиці

#include <iostream>

using namespace std;

int main() {
    const int rows = 4, cols = 4;
    int arr[rows][cols], i, j, t, k, l;
    
    cout << "Enter matrix:" << endl;
    for(i = 0; i < rows; i++) {
       for(j = 0; j < cols; j++) {
            cin >> arr[i][j];
        }
    }
    
    cout << "Matrix:" << endl;
    for(i = 0; i < rows; i++) {
        for(j = 0; j < cols; j++)
        {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    cout << "\v";
    
    
    for(k = 0; k < rows; ++k) {
        for(l = 0; l < cols; ++l) {
           for(i = 0; i < rows; ++i) {
              for(j = 0; j < cols; ++j) {
                  if(arr[k][l] < arr[i][j]) {
                        t=arr[k][l];
                        arr[k][l]=arr[i][j];
                        arr[i][j]=t;
                  }
              }
           }
        }
    }
    
    cout << "New matrix:" << endl;
    for(i = 0; i < rows; i++) {
        for(j = 0; j < cols; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

7

Re: Упоpядкувати елементи матpиці

Теж варіант, хоч і менш оптимальний — такої кількості ітерацій має вистачити з головою.

8

Re: Упоpядкувати елементи матpиці

Якщо кількість пеpеглянутих елементів не пеpевищує эаданої
величини k, знайти кількість паpних елементів, у пpотивному pазі - кількість непаpних
елементів.
Не розумію що від мене хочуть

9

Re: Упоpядкувати елементи матpиці

Не дуже розумію, що таке кількість переглянутих елементів (загальна кількість елементів матриці?).
Змінну k, мабуть, треба вводити з клавіатури. Якщо k більше за «кількість переглянутих елементів» (тобто, розмір матриці?), рахуємо, скільки елементів є парними числами, інакше — скільки елементів є непарними. Парність/непарність можна перевірити, знайшовши оператором % остачу від ділення на 2, або ще можна перевірити останній двійковий розряд порозрядним &.

Ще такий момент: у матриці є рядки і стовпчики. Ваша програма поки що впорядковує лише рядки. Але, можливо, стовпчики теж слід упорядкувати? (При цьому, однак, вміст різних рядків, перед цим упорядкованих, змішується, і їх доведеться сортувати знов, і т.д.).

10

Re: Упоpядкувати елементи матpиці

1. За зростанням можна упорядкувати лише лінійний масив. Двовимірна матриця потребує складнішого критерію (наприклад, за зростанням в стовпчиках і стовпчики за зростанням найбільшого елементу, чи елементи за зростанням спершу в рядках, потім у стовпчиках чи ще якось). Завдання вже не визначене.
2. Я так розумію, малося на увазі кількість порівнянь елементів: коли елементи сортуються - вони переглядаються. У вас ця кількість фіксовано залежить від розмірів матриці, але за інших алгоритмів може бути іншою.