• 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 Pasjonat (20,480 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ź 83 wizyt
pytanie zadane 29 października 2017 w Java przez barteku12 Obywatel (1,060 p.)
0 głosów
3 odpowiedzi 221 wizyt
pytanie zadane 2 stycznia 2017 w Algorytmy przez Mikeros Początkujący (320 p.)
0 głosów
1 odpowiedź 252 wizyt
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

53,012 zapytań

96,205 odpowiedzi

196,940 komentarzy

25,888 pasjonatów

Przeglądających: 278
Pasjonatów: 20 Gości: 258

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.

...