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;
}