• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z sortowaniem

Object Storage Arubacloud
0 głosów
196 wizyt
pytanie zadane 3 lutego 2016 w C i C++ przez Jonki Dyskutant (8,180 p.)

Podczas sortowania na początek liczb ułożonych malejąco wchodzi dziwnie wielka liczba.

#include <iostream>

using namespace std;

void sortowanie(int **tab, size_t *ile)
{
    int *wsk;
    int bufor;
    wsk = &bufor;

    for(int u = 0; u < 2; ++u)
    {
        for(int i = 0; i < *ile; ++i)
        {
            for(int j = 0; j < *ile; ++j)
            {
                if(u == 0)
                {
                    if(*(*(tab + u) + j) > *(*(tab + u) + j+1))
                    {
                        *wsk = *(*(tab + u) + j+1);
                        *(*(tab + u) + j+1) = *(*(tab + u) + j);
                        *(*(tab + u) + j) = *wsk;
                    }
                }
                else if(u == 1)
                {
                    if(*(*(tab + u) + j) < *(*(tab + u) + j+1))
                    {
                        *wsk = *(*(tab + u) + j+1);
                        *(*(tab + u) + j+1) = *(*(tab + u) + j);
                        *(*(tab + u) + j) = *wsk;
                    }
                }
            }
        }
    }

    cout << endl << endl;

    cout << "Liczby posortowane rosnaca: ";
    for(int k = 0; k < *ile; ++k)
    {
        cout << *(*(tab + 0) + k) << ", ";
    }

    cout << endl << endl;

    cout << "Liczby posortowane malejaco: ";
    for(int l = 0; l < *ile; ++l)
    {
        cout << *(*(tab + 1) + l) << ", ";
    }

}

int main()
{
    size_t ile;

    cout << "Ile liczb chcesz posortowac?: ";
    cin >> ile;

    int **tab = new int*[2];
    tab[0] = new int[ile];
    tab[1] = new int[ile];

    for(int i = 0; i < ile; ++i)
    {
        cout << "Podaj " << i+1 << " liczbe: ";
        cin >> *(*(tab + 0)+ i);
        *(*(tab + 1)+ i) = *(*(tab + 0)+ i);
    }

    typedef void (*wskaznik_na_funkcje)(int**, size_t*);

    wskaznik_na_funkcje wsk = sortowanie;

    wsk(tab, &ile);

    delete [] tab;

    return 0;
}

http://zapodaj.net/2563ff1761041.png.html

2 odpowiedzi

0 głosów
odpowiedź 3 lutego 2016 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
A można wiedzieć jaki to algorytm jest?
komentarz 3 lutego 2016 przez junior-lugos Użytkownik (600 p.)
Najbardziej surowy Bubble-Sort, nie sprawdzający czy już jest posortowane. I zwraca dwie tablice jedną posortowaną malejąco a drugą rosnąco z tego co wywnioskowałem :)
komentarz 20 lutego 2016 przez Mariusz M Obywatel (1,640 p.)
Skoro nie potrafisz rozpoznać algorytmu po kodzie to jak możesz mu pomóc
0 głosów
odpowiedź 3 lutego 2016 przez junior-lugos Użytkownik (600 p.)

Działasz na komórkach pamięci nienależących do tablicy. Chociażby *(*(tab + u) + j+1)

W ostatnim przebiegu pętli to jest odwołanie do indeksu [*ile] a to już poza zakresem. 

Podobne pytania

0 głosów
1 odpowiedź 158 wizyt
0 głosów
1 odpowiedź 192 wizyt
0 głosów
1 odpowiedź 151 wizyt
pytanie zadane 27 czerwca 2018 w C i C++ przez Piotr Lis Obywatel (1,310 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...