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

Program crashuje przy sortowaniu

0 głosów
86 wizyt
pytanie zadane 14 grudnia 2017 w C i C++ przez koliber Początkujący (400 p.)

Poniższy kod zdaje się poprawnie sortować (sortowanie shella), bo sprawdzalem coutami, ale z niewiadomych dla mnie przyczyn crashuje się.

 

Oto część kodu, jak trzeba wstawić cały program dajcie znać:

#include <iostream>
#include <cstdlib>   // for srand and rand
#include <ctime>     // for time
#include <math.h>

using namespace std;

int potega(int podst,int pot){
    int wynik = podst;
    for(int i = 1; i < pot; i++){
        wynik = wynik *podst;
    }
    return wynik;
}

void shellON32(int tab[], int n){
    int k = 1;
    int przerwa = 2*(n / potega(2, k+1)) +1;
    cout << "przerwa" << przerwa << endl;
    while(przerwa > 0){

        int j = 0;
        for(int i = przerwa; i < n; i++){
            int temp = tab[i];

            for(j = i; j >= przerwa && tab[j - przerwa] > temp; j = j - przerwa){
                tab[j] = tab[j - przerwa];
            }

            tab[j] = temp;
        }
        k++;
        przerwa = 2*(n / potega(2, k+1)) +1;

    }

}

int main()
{
    //srand(time(0));

    int n = 30;
    int tab[n];
    for(int i = 0; i < n; i++){
        tab[i] = rand() % 100+1;
    }

    for(int i = 0; i < n; i++){
        cout << tab[i] << endl;
    }


    shellON32(tab, n);

    cout << "sortu sortu" << endl;

    for(int i = 0; i < n; i++){
        cout << tab[i] << endl;
    }




    return 0;
}

 

Będę wdzięczny za wskazanie błędu

1 odpowiedź

0 głosów
odpowiedź 14 grudnia 2017 przez k222 Stary wyjadacz (12,660 p.)

Masz 2 razy tę samą linię kodu:

przerwa = 2*(n / potega(2, k+1)) +1;

w 18 i 33 linijce - usuń 1 z nich (pewnie tą drugą) i powinno być ok

Podobne pytania

0 głosów
1 odpowiedź 82 wizyt
pytanie zadane 29 października 2017 w Java przez barteku12 Użytkownik (860 p.)
0 głosów
3 odpowiedzi 208 wizyt
pytanie zadane 2 stycznia 2017 w Algorytmy przez Mikeros Początkujący (320 p.)
0 głosów
1 odpowiedź 232 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.
Ciekawy innych porad? Odwiedź tę stronę!

45,876 zapytań

86,346 odpowiedzi

172,636 komentarzy

22,284 pasjonatów

Przeglądających: 55
Pasjonatów: 1 Gości: 54

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...