Mam program, który posortuje liczby w tablicy, z tym, że te liczby będą od razu podane w programie.
Program się kompiluje, ale po pojawieniu konsoli wyskakuje błąd, że program przestał działać.
Nie wiem co jest powodem, dlatego próbuję czego się da i wciąż jest to samo (w komentarzach zapisana poprzednia wersja zadania, też skompilowało ale wyrzuciło potem błąd). Rozwiązanie z wskaźnikiem i delete wzorowane na przykładach z internetu, które miały ten problem rozwiązać ale u mnie dalej nie chce zadziałać.
#include <iostream>
using namespace std;
void sortowanie(int *tab, int size){
int ktoraPozycja = 0;
int bufor;
while(ktoraPozycja<size){
for(int i=size-1; i>=1; i++){
if(tab[i] < tab[i-1])
bufor = tab[i-1];
tab[i-1]=tab[i];
tab[i]=bufor;
ktoraPozycja=i;
}
}
}
int main(){
int *arr;
arr = new int[5];
arr[0]=2;
arr[1]=7;
arr[2]=1;
arr[3]=5;
arr[4]=3;
int size=5;
/*
int arr[]= {2, 7, 1, 5, 3};
int size = sizeof(arr) / sizeof(int);
*/
sortowanie(arr, size);
cout << "Po posortowaniu arr[]= {";
for(int i=0; i<size; i++){
cout <<arr[i]<<", ";
}
cout <<"]"<<endl;
delete []arr;
return 0;
}
Mógłby ktoś wyjaśnić dlaczego się to wysypuje? I jak to zmienić?
Być może to zwykłe przeoczenie i problem jest błahy, ale dopiero zaczynam naukę języka C++.