Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Radoslaw Wielonski I7X2N1
- //TIiK Model Zrodla Informacji
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <sstream>
- #include <algorithm>
- using namespace std;
- struct Result
- {
- Result(unsigned char insymbol, unsigned int incount)
- {
- symbol = insymbol;
- count = incount;
- }
- unsigned char symbol;
- unsigned int count;
- };
- bool SortingFunc(Result a, Result b)
- {
- if (a.count > b.count)
- return true;
- else
- if(a.count == b.count)
- {
- if (a.symbol < b.symbol)
- return true;
- }
- return false;
- }
- void Sorting(vector<Result>& vec)
- {
- sort(vec.begin(), vec.end(), SortingFunc);
- }
- void dataInput(ifstream& in, vector<Result>& vecData)
- {
- stringstream stream;
- stream << in.rdbuf();
- string a = stream.str();
- while(!a.empty())
- {
- unsigned char symbol = a[0];
- a.erase(a.begin());
- bool bchanged = false;
- for (unsigned int i = 0; i < vecData.size(); i++)
- {
- if (vecData[i].symbol == symbol)
- {
- vecData[i].count++;
- bchanged = true;
- break;
- }
- }
- if (!bchanged)
- vecData.push_back(Result(symbol, 1));
- }
- }
- int main(int argumentCount, char* argumentValue[])
- {
- if (argumentCount < 2)
- {
- cout << "Nie wskazales zadnego pliku wejsciowego\n";
- return 0;
- }
- cout << "Wczytywanie pliku wejsciowego\n";
- ifstream fileInput;
- fileInput.open(argumentValue[1], ios::binary);
- cout << "Plik wejsciowy zostal otwarty\n";
- if (!fileInput.is_open())
- {
- cout << "Plik wejsciowy nie zostal otwarty\n";
- return -1;
- }
- vector<Result>data;
- cout << "Plik wejsciowy zostanie wczytany\n";
- dataInput(fileInput, data);
- cout << "Plik wejsciowy zostal wczytany \nOtwieranie pliku wyjsciowego wynik.licz\n";
- ofstream dataOutput;
- dataOutput.open("wynik.licz");
- cout << "Plik wyjsciowy wynik.licz zostal otwarty \nZapisywanie danych do pliku wyjsciowego wynik.licz\n";
- for (unsigned int i = 0; i < data.size(); ++i)
- {
- dataOutput << int(data[i].symbol) << " " << data[i].count << "\n";
- }
- cout << "Zapisywanie danych do pliku wynik.licz zostalo zakonczone \nZamykanie pliku wynik.licz\n";
- dataOutput.close();
- cout << "Rozpoczecie sortowania\n";
- Sorting(data);
- cout << "Sortowanie zakonczone\nOtwarcie pliku wyjsciowego wynikPosortowany.msort\n";
- ofstream dataOutputSort;
- dataOutputSort.open("wynikPosortowany.msort");
- cout << "Rozpoczecie wypelniania pliku wyjsciowego wynikPosortowany.msort\n";
- for (unsigned int i = 0; i < data.size(); ++i)
- {
- dataOutputSort << int(data[i].symbol) << " " << data[i].count << "\n";
- }
- cout << "Plik wyjsciowy wynikPosortowany.msort zostal wypelniony\nZamkniecie pliku wynikPosortowany.msort\n";
- dataOutputSort.close();
- cout << "Otwieranie pliku wyjsciowego wynikIle.ile\n";
- ofstream countCounter;
- countCounter.open("wynikIle.ile");
- cout << "Plik wyjsciowy wynikIle.ile zostal otwarty\nWypelnianie pliku wyjsciowego wynikIle.ile\n";
- int cCounter = 0;
- for (unsigned int i = 0; i < data.size(); ++i)
- {
- cCounter += data[i].count;
- }
- countCounter << cCounter;
- cout << "Plik wyjsciowy wynikIle.ile zostal wypelniony\n";
- countCounter.close();
- cout << "Plik wyjsciowy wynikIle.ile zostal zamkniety\n\nProgram zakonczyl swoje dzialanie\n";
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement