Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <cstring>
- #include <clocale>
- #include <sstream>
- #include <vector>
- #include <unistd.h>
- #include <regex>
- using namespace std;
- int numberOfSpaces;
- int W = 65;
- int I = 5;
- int Z;
- int i;
- int emptyString = 0;
- int redFlag;
- int bufferSpaceCounter = 0;
- char buffer;
- string inputFileName;
- string outputFileName;
- string line;
- string inputBuffer;
- string spaceBuffer;
- string stringBuffer;
- string word;
- string processBuffer;
- char *char_array;
- istringstream iss;
- vector<string> abzac;
- vector<string> lines;
- vector<string> localLines;
- ifstream fin;
- ofstream fout;
- void Parse()
- {
- //cout << stringBuffer << endl;
- stringBuffer += ' ';
- if (stringBuffer.size() == 0)
- {
- abzac.push_back("EMPTY");
- return;
- }
- for (int i = 0; i < stringBuffer.size(); i++)
- {
- if ((stringBuffer[i] == ' ') || (stringBuffer[i] == '\t'))
- {
- bufferSpaceCounter++;
- }
- if (bufferSpaceCounter == stringBuffer.size())
- {
- bufferSpaceCounter = 0;
- abzac.push_back("EMPTY");
- }
- }
- for (int i = 0; i < stringBuffer.size(); i++)
- {
- buffer = stringBuffer[i];
- //cout << buffer << " ";
- if (buffer == ' ' || buffer == '\t')
- {
- numberOfSpaces++;
- spaceBuffer += buffer;
- }
- else
- {
- if (numberOfSpaces >= 2)
- {
- emptyString = 0;
- abzac.push_back(inputBuffer);
- inputBuffer = "";
- spaceBuffer = "";
- numberOfSpaces = 0;
- }
- emptyString = 0;
- inputBuffer += spaceBuffer + buffer;
- numberOfSpaces = 0;
- spaceBuffer = "";
- }
- }
- }
- void Wide(string input, int W)
- {
- //cout << input << endl;
- for (int i = 0; i < input.size() - 1; i++)
- {
- //cout << input[i] << " ";
- }
- //cout << endl;
- for (int i = 0; i < input.size() - 1; i++)
- {
- if (input.size() < W) {
- if ((input[i] == '.') || (input[i] == '?') || (input[i] == '!')) {
- input.insert(i + 1, 1, ' ');
- //cout << input << endl;
- }
- }
- }
- //cout << endl;
- for (int i = 0; i < input.size() - 1; i++)
- {
- if ((input.size() < W) && ((input[i] == ',') || (input[i] == ';') || (input[i] == ':'))) {
- input.insert(i + 1, 1, ' ');
- //cout << input << endl;
- }
- }
- //cout << endl;
- for (int i = 0; i < input.size() - 1; i++)
- {
- if ((input.size() < W)) {
- if (input[i + 1] == '-') {
- input.insert(i + 1, 1, ' ');
- i++;
- //cout << input << endl;
- }
- if (input[i] == '-') {
- input.insert(i + 1, 1, ' ');
- //cout << input << endl;
- }
- }
- }
- for (int i = 0; i < input.size() - 1; i++)
- {
- if ((input.size() < W) && (input[i] == ' '))
- {
- input.insert(i++, 1, ' ');
- //cout << input << endl;
- }
- }
- //cout << endl;
- fout << input << endl;
- }
- int main(int argc, char *argv[])
- {
- if((argc < 3)||(argc > 5)){
- cout << "WRONG COMMANDLINE ARGUMENTS!" << endl;
- return -2;
- }
- W = atoi(argv[1]);
- I = atoi(argv[2]);
- inputFileName = argv[3];
- outputFileName = argv[4];
- setlocale(LC_ALL, "Russian");
- //cout << "Enter File Name:";
- //cin >> inputFileName;
- fin.open(inputFileName/*"2.txt"*/);
- fout.open(outputFileName);
- if ((!fin.is_open())||(!fout.is_open()))
- {
- cout << "FATALERROR!";
- return -1;
- }
- getline(fin, stringBuffer);
- Parse();
- for (int i = 1; getline(fin, stringBuffer); ++i)
- {
- Parse();
- }
- abzac.push_back(inputBuffer);
- for (int i = 0; i < abzac.size(); i++)
- {
- fout << abzac[i] << endl;
- }
- for (int i = 0; i < abzac.size(); i++)
- {
- //cout << endl << i << endl;
- istringstream iss(abzac[i]);
- redFlag = 1;
- if (abzac[i] == "EMPTY")
- {
- fout << spaceBuffer << processBuffer;
- processBuffer = "";
- spaceBuffer = "";
- fout << '\n';
- continue;
- }
- while (iss >> word) {
- //cout << word << " ";
- if (redFlag == 1)
- {
- Z = W - I;
- }
- else
- {
- Z = W;
- }
- if (processBuffer.size() + word.size() < Z)
- {
- processBuffer += word + " ";
- }
- else
- {
- //localLines.push_back(processBuffer);
- //processBuffer.erase(processBuffer.size() - 1);
- //processBuffer.pop_back();
- //cout << processBuffer << endl;
- processBuffer.pop_back();
- if (redFlag == 1)
- {
- fout << string(I, ' ');
- }
- Wide(processBuffer, Z);
- processBuffer = "";
- processBuffer += word += " ";
- redFlag = 0;
- //TODO Удлинение строки
- }
- }
- //processBuffer.erase(processBuffer.size() - 1);
- //localLines.push_back(processBuffer);
- //processBuffer.pop_back();
- //cout << processBuffer <<'#'<< endl;
- //cout << endl;
- fout << processBuffer << endl;
- fout << endl;
- processBuffer = "";
- //cout << "->" << abzac[i] << "<-" << endl;
- }
- std::system("pause");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement