1

Тема: Проблема з функцією void

#include <iostream>
#include <cstdlib>
#include <time.h>
const int n = 10;

using namespace std;

void sortbuble(int arr[n][n]) {
    int temp;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            for (int a = 0; a < n; a++) {
                for (int b = 0; b < n; b++) {
                    if (arr[i][j] < arr[a][b]) {
                        temp = arr[i][j];
                        arr[i][j] = arr[a][b];
                        arr[a][b] = temp;
                    }
                }
            }
        }
    }
}


int main()
{
    int temp;
    srand(time(NULL));
    int arr[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            arr[i][j] = rand() % +50;
            cout << arr[i][j] << "  ";
        }
        cout << endl;
    }
    cout << endl << endl << endl;
    sortbuble(arr);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            arr[i][j] = rand() % +50;
            cout << arr[i][j] << "  ";
        }
        cout << endl;
    }
}

Доброго вечора, я хочу посортувати масив від мінімального до максимального значення, тут виникає питання, чому в головній функції цикл працює правильно, а в функції void чомусь не хоче працювати. Можете підсказати в чому біда ?

2 Востаннє редагувалося koala (17.12.2020 17:56:19)

Re: Проблема з функцією void

1. void - це лише тип значення, що повертається. Казати на функцію sortbuble "функція void" - це так само, як казати на функцію main "функція int".
2. Це не бульбашкове сортування. Це сортування методом "АААА ВСІ ХТО МОЖНА ЯК МОЖНА ПОРІВНЯЙТЕСЯ І ПОМІНЯЙТЕСЯ!!!!1111". Ні, воно сортує, я не заперечую, і навіть ефективніше за деякі алгоритми; навіть за оцінкою на ті ж O(n2), що й бульбашка, виходить. Але все ж краще ретельніше підходити до реалізації алгоритмів.
3. Так, я вже сказав: воно працює. Проблема в тому, що після сортування ви знову створюєте масив замість просто вивести його. Приберіть другий рядок

            arr[i][j] = rand() % +50;

і все запрацює.

P.S. 4. Якщо ви винесете виведення в окрему функцію, то унеможливите подібну помилку в майбутньому.

Подякували: Bogdan_INT1