Advertisement
Glenpl

Porownywarka plikow

Jan 22nd, 2015
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class obsluga_pliku
  8. {
  9.     string file_path;
  10.  
  11. public:
  12.     fstream plik;
  13.     void file_open();
  14.     void file_close();
  15.     obsluga_pliku(string);
  16. };
  17.  
  18. void obsluga_pliku::file_open()
  19. {
  20.     this->plik.open(file_path.c_str(), ios_base::in | ios_base::app);
  21. }
  22. void obsluga_pliku::file_close()
  23. {
  24.     this->plik.close();
  25. }
  26. obsluga_pliku::obsluga_pliku(string path)
  27. {
  28.     this->file_path = path + ".txt";
  29. }
  30.  
  31. int main()
  32. {
  33.     // wybieranie plikow i utworzenie
  34.     // obslugujacych je obiektow
  35.     string filepath1, filepath2;
  36.     std::cout<<"Podaj nazwe pliku pierwszego:\n> ";
  37.     std::cin>>filepath1;
  38.     std::cout<<"Podaj nazwe pliku drugiego:\n> ";
  39.     std::cin>>filepath2;
  40.     std::cout<<"\n";
  41.     obsluga_pliku plik1(filepath1), plik2(filepath2);
  42.     plik1.file_open();
  43.     plik2.file_open();
  44.  
  45.     // zmienne aktualnej linii i licznika
  46.     int linia = 0;
  47.     int rozne = 0;
  48.     string str1, str2;
  49.     int p1 = 0, p2 = 0;
  50.  
  51.     // porownywanie plikow
  52.     // 1. czy maja rowna liczbe linijek
  53.     while(getline(plik1.plik, str1))
  54.         p1++;
  55.     while(getline(plik2.plik, str2))
  56.         p2++;
  57.  
  58.     std::cout<<"Plik1: "<<p1<<" linijek;\n";
  59.     std::cout<<"Plik2: "<<p2<<" linijek;\n\n";
  60.     plik1.file_close();
  61.     plik2.file_close();
  62.     plik1.file_open();
  63.     plik2.file_open();
  64.  
  65.     // 2. ktore linijki sa rozne
  66.     std::cout<<"Linie rozne (sprawdzone zostanie ";
  67.     std::cout<<(p1>p2?p2:p1)<<" pierwszych linijek):\n\n";
  68.  
  69.     while(getline(plik1.plik, str1) && getline(plik2.plik, str2))
  70.     {
  71.         linia++;
  72.         if(str1!=str2)
  73.         {
  74.             rozne++;
  75.             std::cout<<"Linijka "<<linia<<": \n";
  76.             std::cout<<"F1: |"<<str1<<"|\n";
  77.             std::cout<<"F2: |"<<str2<<"|\n\n";
  78.         }
  79.     }
  80.     if(rozne==0)
  81.         std::cout<<"Wszystkie sprawdzone linie byly identyczne.\n\n";
  82.     else
  83.         std::cout<<"Znaleziono "<<rozne<<" nieidentycznych linijek.\n\n";
  84.  
  85.     // konczenie pracy programu
  86.     std::cout<<"Kliknij trzykrotnie dowolny klawisz aby zamknac program.\n";
  87.     int index = 0;
  88.     while(index < 3)
  89.     {
  90.         getch();
  91.         index++;
  92.     }
  93.     plik1.file_close();
  94.     plik2.file_close();
  95.     return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement