Advertisement
Guest User

tablica znaków3

a guest
May 27th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.28 KB | None | 0 0
  1. //Radoslaw Wielonski I7X2N1
  2. //TIiK Model Zrodla Informacji
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <fstream>
  7. #include <vector>
  8. #include <sstream>
  9. #include <algorithm>
  10.  
  11. using namespace std;
  12.  
  13. struct Result
  14. {
  15.     Result(unsigned char insymbol, unsigned int incount)
  16.     {
  17.         symbol = insymbol;
  18.         count = incount;
  19.     }
  20.     unsigned char symbol;
  21.     unsigned int count;
  22. };
  23.  
  24. bool SortingFunc(Result a, Result b)
  25. {
  26.     if (a.count > b.count)
  27.         return true;
  28.     else
  29.         if(a.count == b.count)
  30.         {
  31.             if (a.symbol < b.symbol)
  32.                 return true;
  33.         }
  34.     return false;
  35. }
  36.  
  37.  
  38. void Sorting(vector<Result>& vec)
  39. {
  40.     sort(vec.begin(), vec.end(), SortingFunc);
  41. }
  42.  
  43. void dataInput(ifstream& in, vector<Result>& vecData)
  44. {
  45.     stringstream stream;
  46.     stream << in.rdbuf();
  47.  
  48.     string a = stream.str();
  49.  
  50.     while(!a.empty())
  51.     {
  52.         unsigned char symbol = a[0];
  53.         a.erase(a.begin());
  54.         bool bchanged = false;
  55.         for (unsigned int i = 0; i < vecData.size(); i++)
  56.         {
  57.             if (vecData[i].symbol == symbol)
  58.             {
  59.                 vecData[i].count++;
  60.                 bchanged = true;
  61.                 break;
  62.             }
  63.         }
  64.         if (!bchanged)
  65.             vecData.push_back(Result(symbol, 1));
  66.     }
  67. }
  68.  
  69. int main(int argumentCount, char* argumentValue[])
  70. {
  71.  
  72.     if (argumentCount < 2)
  73.     {
  74.         cout << "Nie wskazales zadnego pliku wejsciowego\n";
  75.         return 0;
  76.     }
  77.  
  78.     cout << "Wczytywanie pliku wejsciowego\n";
  79.     ifstream fileInput;
  80.    
  81.     fileInput.open(argumentValue[1], ios::binary);
  82.     cout << "Plik wejsciowy zostal otwarty\n";
  83.  
  84.     if (!fileInput.is_open())
  85.     {
  86.         cout << "Plik wejsciowy nie zostal otwarty\n";
  87.         return -1;
  88.     }
  89.  
  90.     vector<Result>data;
  91.  
  92.     cout << "Plik wejsciowy zostanie wczytany\n";
  93.     dataInput(fileInput, data);
  94.     cout << "Plik wejsciowy zostal wczytany \nOtwieranie pliku wyjsciowego wynik.licz\n";
  95.  
  96.     ofstream dataOutput;
  97.     dataOutput.open("wynik.licz");
  98.     cout << "Plik wyjsciowy wynik.licz zostal otwarty \nZapisywanie danych do pliku wyjsciowego wynik.licz\n";
  99.  
  100.     for (unsigned int i = 0; i < data.size(); ++i)
  101.     {
  102.         dataOutput << int(data[i].symbol) << " " << data[i].count << "\n";
  103.     }
  104.     cout << "Zapisywanie danych do pliku wynik.licz zostalo zakonczone \nZamykanie pliku wynik.licz\n";
  105.     dataOutput.close();
  106.  
  107.     cout << "Rozpoczecie sortowania\n";
  108.     Sorting(data);
  109.     cout << "Sortowanie zakonczone\nOtwarcie pliku wyjsciowego wynikPosortowany.msort\n";
  110.  
  111.  
  112.     ofstream dataOutputSort;   
  113.     dataOutputSort.open("wynikPosortowany.msort");
  114.  
  115.     cout << "Rozpoczecie wypelniania pliku wyjsciowego wynikPosortowany.msort\n";
  116.     for (unsigned int i = 0; i < data.size(); ++i)
  117.     {
  118.         dataOutputSort << int(data[i].symbol) << " " << data[i].count << "\n";
  119.     }
  120.     cout << "Plik wyjsciowy wynikPosortowany.msort zostal wypelniony\nZamkniecie pliku wynikPosortowany.msort\n";
  121.  
  122.     dataOutputSort.close();
  123.  
  124.     cout << "Otwieranie pliku wyjsciowego wynikIle.ile\n";
  125.     ofstream countCounter;
  126.     countCounter.open("wynikIle.ile");
  127.     cout << "Plik wyjsciowy wynikIle.ile zostal otwarty\nWypelnianie pliku wyjsciowego wynikIle.ile\n";
  128.  
  129.     int cCounter = 0;
  130.  
  131.     for (unsigned int i = 0; i < data.size(); ++i)
  132.     {
  133.         cCounter += data[i].count;
  134.     }
  135.  
  136.  
  137.     countCounter << cCounter;
  138.     cout << "Plik wyjsciowy wynikIle.ile zostal wypelniony\n";
  139.     countCounter.close();
  140.     cout << "Plik wyjsciowy wynikIle.ile zostal zamkniety\n\nProgram zakonczyl swoje dzialanie\n";
  141.     system("PAUSE");
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement