Witam.Prosiłbym o pomoc przy części programu w 2 case. Jak widać program ma sortować szybko uniwersalnie z danych z klawiatury lub z pliku ale mam gdzieś błąd we wczytywaniu.Prosiłbym o pomoc bardziej doświadczonych od siebie.
#include<iostream>
#include <fstream>
using namespace std;
void quick_sort(int *tab, int lewy, int prawy)
{
if(prawy <= lewy) return;
int i = lewy - 1, j = prawy + 1,
pivot = tab[(lewy+prawy)/2];
while(1)
{
while(pivot>tab[++i]);
while(pivot<tab[--j]);
if( i <= j)
swap(tab[i],tab[j]);
else
break;
}
if(j > lewy)
quick_sort(tab, lewy, j);
if(i < prawy)
quick_sort(tab, i, prawy);
}
int main()
{
int *tab, n, liczba,tmp = 0;
std::cout << "Wybierz sposob sortowania:\n";
std::cout << "1) Sortowanie poprzez wpisanie:\n";
std::cout << "2) Sortowanie z pliku:\n\n";
std::cin >> liczba;
switch( liczba )
{
case 1:
cout << "Wybrales sposob nr 1\n";
cout << "Prosze podac liczbe liczb do posortowania\n";
cin>>n;
tab = new int [n];
cout << "Podaj liczby do posortowania \n";
for(int i=0;i<n;i++)
cin>>tab[i];
quick_sort(tab,0, n-1);
cout << "\n\nWynik posortowania \n";
for(int i=0;i<n;i++)
cout<<tab[i]<<" ";
cin.ignore();
cin.get();
break;
case 2:
cout << "Wybrales sposob nr 2\n";
cout << "UWAGA: Plik liczby.txt powinien znajdowac sie w \n";
cout << "tym samym folderze co progam\n\n";
ifstream liczby("liczby.txt");
if (!liczby)
{
cout << "\nNie mozna otworzyc pliku";
getchar();
return 1;
}
while (!liczby.eof())
liczby >> tab[tmp++];
liczby.close();
n=tmp;
quick_sort(tab,0, n-1);
cout << "\n\nWynik posortowania \n";
for(int i=0;i<n;i++)
cout<<tab[i]<<" ";
cin.ignore();
cin.get();
break;
}
return 0;
}