Funkcja do sortowania elementów tablicy dynamicznej rosnąco i malejąco

0

Cześć, mam problem z funkcją sortującą. Kombinowałem ze znacznikami i niby kompiluje, ale nic nie wyświetla.
Chodzi oczywko o funkcje posortuj
PS. Wiem, że switcha powinienem użyc

#include <iostream>
#include <math.h>
#include <cstdlib>
#include <ctime>

using namespace std;

void posortuj(int tablica, int n, bool rosnaco)
{

    if (rosnaco = 0) {

        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (tablica[j] < tablica[j + 1])
                    swap(tablica[j], tablica[j + 1]);

        for (int i = 0; i < n; i++)
            cout << tablica[i] << " ";
    }
    else {

        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (tablica[j] > tablica[j + 1])
                    swap(tablica[j], tablica[j + 1]);

        for (int i = 0; i < n; i++)
            cout << tablica[i] << " ";
    }
}

int main()
{
    int rozmiar, menu;
    bool rosnaco;
    srand(time(NULL));
    cout << "Podaj rozmiar tablicy:" << endl;
    cin >> rozmiar;
    while (rozmiar < 100) {
        system("cls");
        cout << "Zla wartosc! Podaj jeszcze raz: ";
        cin >> rozmiar;
    }

    int* tablica = new int[rozmiar];

    for (int i = 0; i < rozmiar; i++)
        tablica[i] = rand() % 100 + 1;

    system("cls");
    cout << "Co chcesz zrobic?" << endl
         << "1) Posortowac tablice" << endl
         << "2) Sprawdzic czy dana liczba znajduje sie w tablicy i na jakim miejscu" << endl
         << endl;
    cin >> menu;

    while (menu < 1 || menu > 2) {
        system("cls");
        cout << "Co chcesz zrobic?" << endl
             << "1) Posortowac tablice" << endl
             << "2) Sprawdzic czy dana liczba znajduje sie w tablicy i na jakim miejscu" << endl
             << endl;
        cout << "Zla wartosc! Podaj jeszcze raz: ";
        cin >> menu;
    }

    if (menu == 1) {
        system("cls");
        cout << "Tablica ma zostac posortowana: " << endl
             << "0) Rosnaco" << endl
             << "1) Malejaco";
        cin >> rosnaco;

        system("cls");

        for (int i = 0; i < rozmiar; i++)
            cout << tablica[i] << " ";
    }
    else {
        posortuj(*tablica, rozmiar, rosnaco);
    }

    delete[] tablica;

    return (0);
}
1

void posortuj(int tablica, przyjmujesz (jedną) wartość int, a nie tablicę.

Ponadto, naewt jak już musisz zaimplementować bubblesorta (fuj), to przynajmniej dodaj warunki wcześniejszego zakończenia sortowania. No i nie musisz kopiować całej implementacji w ifie, skoro jedyne co zmieniasz to < na >

0

Czyli powinienem usunąć to z argumentów funkcji? To w jaki sposób ma się odnieść funkcja do tablicy, która jest tworzona w main?

1

Masz przyjąć wskaźnik:

void posortuj(int* tablica, int n, bool rosnaco)

Jeszcze jedno pytanie: dlaczego funkcja posortuj() wypisuje coś na konsolę?

0

Dobra rozumiem moje błędy,

Dzięki! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1