Mam problem z Insert Sortem. Po wyborze opcji program się wywala z komunikatem "Process exited with return value 3221225477. Znajony twierdz, że to coś ze wskaźnikiem, ale nie potrafię tego odszukać. Gdzie jest błąd i jak go naprawić. Z góry dzięki za pomoc.
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
const int rozmiar = 100000;
int* tablica;
int por = 0;
int zam = 0;
int zamiana[100];
int porownania[100];
void wypisz(int rozmiar, int tab1[])
{
std::cout << std::endl;
std::cout << "Posortowany ciag " << std::endl;
for (int i = 0; i < rozmiar; ++i)
{
std::cout << tab1[i] << " ";
}
}
void ustaw(int* tablica, int rozmiar)
{
tablica = new int[rozmiar];
}
void wybor(int opcja, int* tablica, int rozmiar)
{
switch(opcja)
{
case 1:
for (int i = 0; i < rozmiar; ++i)
{
int buff;
buff = rozmiar - i;
tablica[i] = buff;
}
for (int i = 0; i < rozmiar; ++i)
{
std::cout << tablica[i] << " ";
}
break;
case 2:
srand (static_cast<int>(time(NULL)));
for (int i = 0; i < rozmiar; ++i)
{
tablica[i] = rand() % rozmiar + 1;
}
for (int i = 0; i < rozmiar; ++i)
{
std::cout << tablica[i] << " ";
}
}
}
int IS(int* tablica, int rozmiar, int opcja)
{
ustaw(tablica, rozmiar);
wybor(opcja, tablica, rozmiar);
int i;
for (int j = 1; j < rozmiar; ++j)
{
int x = tablica[j];
i = j - 1;
while (i >= 0 && tablica[i] > x)
{//por+1
tablica[i+1] = tablica[i];//zam
i = i - 1;
por++;
}
tablica[i+1] = x;
zam++;
}
std::cout << std::endl;
wypisz(rozmiar, tablica);
delete [] tablica;
}
void test(int zam, int por, int* zamiana, int* porownania)
{
int help_zam;
int help_por;
for(int i = 1; i <= 100; i++)
{
zam = 0;
por = 0;
for(int j = 0; j < 10; j++)
{
int* tab;
IS(tab, (i*100), 2);
help_zam += zam;
help_por += por;
delete [] tab;
}
zamiana[i - 1] = help_zam/10;
porownania[i - 1] = help_por/10;
}
}
int main()
{
int opcja;
int rozmiar;
std::cout << "Podaj rozmiar ";
std::cin >> rozmiar;
std::cout << "1. Ciag posortowany odwrotnie" << std::endl;
std::cout << "2. Ciag losowy" << std::endl;
std::cin >> opcja;
IS (tablica, rozmiar, opcja);
test(zam, por, zamiana, porownania);
wypisz(100, zamiana);
wypisz(100, porownania);
getch();
}