Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <string>
- #include <fstream>
- using namespace std;
- const int SZEROKOSC_WIERSZA=80;
- void justowanie(string wczytanyTekst)
- {
- string justowanyTekstCiagiem;
- int miejsceSpacji=0, x=1, iloscWierszy=1;
- for (size_t i = 0; i < wczytanyTekst.length(); i++)
- {
- justowanyTekstCiagiem += wczytanyTekst[i]; //doklejamy kazdy znak do nowego stringa
- if (justowanyTekstCiagiem[i] == ' ') //zapamietanie miejsca spacji
- miejsceSpacji = i;
- if (x == SZEROKOSC_WIERSZA) // jesli linia sie konczy
- {
- justowanyTekstCiagiem[miejsceSpacji] = '\n'; // wstaw znak nowej linii w miejsce ostatniej spacji
- int old = justowanyTekstCiagiem.length(); //deklaruje zmienna o aktualnej dlugosci wiersza
- justowanyTekstCiagiem = justowanyTekstCiagiem.substr(0, miejsceSpacji + 1); // wycina calego stringa do miejsca ostatniej spacji i podstawia go z powrotem do zmiennej (o długości miejsceSpacji +1)
- i -= old - justowanyTekstCiagiem.length(); // cofa petle do miejsca w ktorym znajduja sie usuniete litery, aby dodac je w nowej linii
- x = 1; //resetuje licnzik
- iloscWierszy++;
- continue; // pomija pozostala czesc petli i przechodzi do kolejnego powtorzenia
- }
- x++;
- }
- string justowany[iloscWierszy];
- int nrWiersza=0;
- for(int i=0; i<justowanyTekstCiagiem.length();i++) //Przepisuje stringa do tablicy 2 wymiarowej, zmieniajac wiersz gdy napotyka znak nowej linii
- {
- justowany[nrWiersza]+=justowanyTekstCiagiem[i];
- if(justowanyTekstCiagiem[i]=='\n')
- nrWiersza++;
- }
- for(int i=0; i<iloscWierszy; i++)
- {
- int spacjeDoDodania=0, dlugoscWiersza=justowany[i].length()-1;
- if(i==iloscWierszy-1)
- spacjeDoDodania=SZEROKOSC_WIERSZA-justowany[i].length()-1;
- else
- spacjeDoDodania=SZEROKOSC_WIERSZA-justowany[i].length();
- for(int k=dlugoscWiersza ;k>=0; k--)
- {
- if(justowany[i][k]==' ' && justowany[i][k-1]!=' ')
- {
- dlugoscWiersza++;
- spacjeDoDodania--;
- justowany[i].insert(k," ");
- }
- if(spacjeDoDodania>=0 && k<=0)
- {
- k=justowany[i].length();
- }
- if(spacjeDoDodania < 0)
- break;
- if(justowany[i].find(' ', 0)==-1)
- break;
- }
- }
- ofstream zapis;
- zapis.open("Wyjustowany.txt"); // Otworz plik do ktorego bedziesz zapisywac
- for(int i=0; i<iloscWierszy; i++) // zapisuje po linijce do pliku
- zapis << justowany[i];
- zapis.close();
- }
- bool start()
- {
- ifstream plik;
- plik.open("Justuj.txt");
- if(plik.good())
- {
- plik.close();
- return 1;
- }
- else
- {
- plik.close();
- return 0;
- }
- }
- void zpliku ()
- {
- int choose;
- ifstream plik;
- string nazwapliku,tekst, slowo;
- plik.open("Justuj.txt"); //otwiera plik
- if(plik.is_open())
- {
- while(plik.good()) //dopoki w pliku justowanyTekstCiagiem linijki pobieraj je
- {
- slowo.clear();
- plik >> slowo;
- tekst+=slowo+" ";
- }
- while(tekst[tekst.length()-1]==' ')
- tekst=tekst.substr(0,tekst.length()-1);
- justowanie(tekst);
- choose=2;
- }
- }
- void stdstr()
- {
- string tekst;
- cout <<"Podaj tekst, ktory ma zostac wyjustowany: ";
- cin.clear();
- cin.sync();
- getline(cin, tekst);
- justowanie(tekst);
- }
- main()
- {
- cout <<"Program wczytuje tekst z pliku Justuj.txt, jesli taki nie istnieje pobiera go ze standardowego wejscia.\nWyjustowany tekst znajduje sie w pliku Wyjustowany.txt\n\n";
- if(start()) //Funkcja sprawdza czy wczytac tekst ze standardowego wejscia czy z pliku
- zpliku();
- else
- stdstr();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement