Witam,
mam do napisania program o następujących założeniach:
Wylosować w tablice 100 elementów typu int z przedziału <-500,500>
Zaimplementować algorytm ‘quicksort’ z wykorzystaniem rekurencji.
Posortować wylosowaną tablicę.
Wylosowałem i wypisałem na ekran elementy - tu wszystko jest ok. Problem w tym, że nie chce nie mogę wyświetlić posortowanych liczb - program przerywa działanie po wylosowaniu liczb i zwraca dużą wartość.
Mój program:
#include <iostream>
#include <fstream> //do plików
#include <ctime>
#include <cstdlib>
#define zad1_r 100
using namespace std;
void zad1 ();
int main()
{
zad1 ();
}
int *losowanie ()
{
srand(time(NULL));
int tab[zad1_r];
for (int i=0; i<zad1_r; i++)
{
tab[i]=rand()/1001-500;
}
return tab;
}
int *drukuj (int *pobrane)//tutaj może być też void
{
cout<<"WYLOSOWANA TABLICA\n";
int tab[zad1_r];
for (int i=0; i<zad1_r; i++)
{
cout<<tab[i]<<" ";
}
}
int partycjonowanie (int *pobrane, int start, int koniec)
{
int piwot=pobrane[koniec];
int r;
while (pobrane[start]<piwot)
start++;
while (pobrane[koniec]>piwot)
koniec--;
if (pobrane[start]==pobrane[koniec])
start++;
else if (start<koniec)
{
int zmienna=pobrane[start];
pobrane[start]=pobrane[koniec];
pobrane[koniec]=zmienna;
}
return r;
}
void sortowanie (int *pobrane, int start, int koniec)
{
if (start<koniec)
{
int j=partycjonowanie (pobrane, start, koniec);
sortowanie(pobrane, start, j-1);
sortowanie(pobrane, j+1, koniec);
}
}
void zad1 ()
{
losowanie();
int *pobrane=losowanie();
drukuj(pobrane);
sortowanie (pobrane, 0, 99);
drukuj(pobrane);
}
Moje logi kompilacji (nie wiedziałem jak je wstawić, więc dałem cytat)
General: TDM-GCC 4.8.1 64-bit Release
Executing g++.exe...
g++.exe "F:\Semestr II - informatyka\Podstawy programowania\na forum.cpp" -o "F:\Semestr II - informatyka\Podstawy programowania\na forum.exe" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.8.1\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib" -static-libgcc
F:\Semestr II - informatyka\Podstawy programowania\na forum.cpp: In function 'int* losowanie()':
F:\Semestr II - informatyka\Podstawy programowania\na forum.cpp9: warning: address of local variable 'tab' returned [-Wreturn-local-addr]
int tab[zad1_r];
^Compilation succeeded in 1.87 seconds with warnings
Pozdrawiam i z góry dziękuję za wszelką pomoc