Rekurencyjne przeszukiwanie binarne pliku dane z pliku wczytywane do wektora i po posortowaniu prze
Kod był wyświetlany 2417 razy.
    /*
	Name: Rekurencyjne przeszukiwanie binarne pliku
	Copyright: GPL GNU
	Date: 16-02-14 12:38
	Description: Dane są wczytywane do wektora i po posortowaniu przeszukiwane
*/

#include <cstdlib>
#include <iostream>
#include <fstream>
#include<algorithm>
#include <vector>

#define BUFF_SIZE 256

using namespace std;

void readFile(char*, vector<int>&);
void clrstr(char*&);
int binSearch(vector<int>,int,int,int);

int main()
{
    vector<int> v;
    
    cout<<"Podaj nazwe pliku z danymi ";
    char * fileName = new char[BUFF_SIZE];
    clrstr(fileName);
    cin>>fileName;
    
     if(!ifstream(fileName))
     {
     cout<<"Plik nie istnieje!"<<endl;
     cin.ignore();
     getchar();
     exit(1);                       
     }
     
    readFile(fileName,v);
    delete[] fileName; 
    
    int szukana;
    cout<<"Podaj liczbe do znalezienia ";
    cin>>szukana;
    
    std::sort(v.begin(),v.end());
    
    int wynik = binSearch(v,0,(v.size() - 1), szukana);
     if(wynik == -1)
      cout<<"nie znaleziono";
     
     if(wynik >= 0)
      cout<<"znaleziono w wektorze na pozycji nr: "<<wynik;
    cin.ignore();
    getchar();
    return 0;
}

void readFile(char* fileName, vector<int>& vDst)
{
 ifstream rplik;
 rplik.open(fileName); 
 int * tmp = new int;
 
  while(rplik>>*tmp)
   vDst.push_back(*tmp);
 
 rplik.close();   
 delete tmp;
}

void clrstr(char*& str) 
{
 for(int i = 0; str[i]!='\0'; i++)
 {
   str[i] = '\0';      
 }     
}

int binSearch(vector<int> v, int dol, int gora, int szukana)
{
if((dol == gora) && (szukana != v[dol]))
 return -1;    
 
if((v[(gora + dol) / 2]) == szukana) return ((gora + dol) / 2);
 if ((v[(gora + dol) / 2]) > szukana) return binSearch(v,dol, ((dol + gora) / 2),szukana);
 if((v[(gora + dol) / 2]) < szukana) return binSearch(v,((dol + gora) / 2), gora,szukana);
}
    
Pobierz plik tekstowy
Załączniki
Administrator WJL
PHP&SQL coded by NOVA-IT