Advertisement
NuquernaNarsil

Untitled

Jan 2nd, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <string>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7.  
  8. const int SZEROKOSC_WIERSZA=80;
  9.  
  10. void justowanie(string wczytanyTekst)
  11. {
  12.     string justowanyTekstCiagiem;
  13.     int miejsceSpacji=0, x=1, iloscWierszy=1;
  14.  
  15.    
  16.     for (size_t i = 0; i < wczytanyTekst.length(); i++)
  17.     {
  18.       justowanyTekstCiagiem += wczytanyTekst[i];   //doklejamy kazdy znak do nowego stringa
  19.    
  20.       if (justowanyTekstCiagiem[i] == ' ') //zapamietanie miejsca spacji
  21.         miejsceSpacji = i;
  22.    
  23.       if (x == SZEROKOSC_WIERSZA) // jesli linia sie konczy
  24.       {
  25.         justowanyTekstCiagiem[miejsceSpacji] = '\n'; // wstaw znak nowej linii w miejsce ostatniej spacji
  26.         int old = justowanyTekstCiagiem.length();   //deklaruje zmienna o aktualnej dlugosci wiersza
  27.         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)
  28.         i -= old - justowanyTekstCiagiem.length(); // cofa petle do miejsca w ktorym znajduja sie usuniete litery, aby dodac je w nowej linii
  29.         x = 1; //resetuje licnzik
  30.         iloscWierszy++;
  31.         continue; // pomija pozostala czesc petli i przechodzi do kolejnego powtorzenia
  32.       }
  33.       x++;
  34.     }      
  35.    
  36.     string justowany[iloscWierszy];
  37.     int nrWiersza=0;
  38.     for(int i=0; i<justowanyTekstCiagiem.length();i++) //Przepisuje stringa do tablicy 2 wymiarowej, zmieniajac wiersz gdy napotyka znak nowej linii
  39.     {
  40.         justowany[nrWiersza]+=justowanyTekstCiagiem[i];
  41.         if(justowanyTekstCiagiem[i]=='\n')
  42.             nrWiersza++;
  43.     }
  44.    
  45.    
  46.     for(int i=0; i<iloscWierszy; i++)
  47.     {
  48.         int spacjeDoDodania=0, dlugoscWiersza=justowany[i].length()-1;
  49.        
  50.         if(i==iloscWierszy-1)
  51.             spacjeDoDodania=SZEROKOSC_WIERSZA-justowany[i].length()-1;
  52.         else
  53.             spacjeDoDodania=SZEROKOSC_WIERSZA-justowany[i].length();
  54.         for(int k=dlugoscWiersza ;k>=0; k--)
  55.         {
  56.             if(justowany[i][k]==' ' && justowany[i][k-1]!=' ')
  57.             {
  58.                 dlugoscWiersza++;
  59.                 spacjeDoDodania--;
  60.                 justowany[i].insert(k," ");
  61.             }
  62.             if(spacjeDoDodania>=0 && k<=0)
  63.             {
  64.                 k=justowany[i].length();
  65.             }
  66.             if(spacjeDoDodania < 0)
  67.                 break;
  68.             if(justowany[i].find(' ', 0)==-1)
  69.                 break;
  70.         }
  71.     }
  72.    
  73.    
  74.     ofstream zapis;
  75.     zapis.open("Wyjustowany.txt"); // Otworz plik do ktorego bedziesz zapisywac
  76.     for(int i=0; i<iloscWierszy; i++) // zapisuje po linijce do pliku
  77.         zapis << justowany[i];
  78.     zapis.close();
  79. }
  80.  
  81. bool start()
  82. {
  83.     ifstream plik;
  84.     plik.open("Justuj.txt");
  85.     if(plik.good())
  86.     {
  87.         plik.close();
  88.         return 1;
  89.     }
  90.     else
  91.     {
  92.         plik.close();
  93.         return 0;
  94.     }
  95. }
  96.  
  97. void zpliku ()
  98. {
  99.     int choose;
  100.     ifstream plik;
  101.     string nazwapliku,tekst, slowo;
  102.    
  103.         plik.open("Justuj.txt"); //otwiera plik
  104.         if(plik.is_open())
  105.         {
  106.             while(plik.good()) //dopoki w pliku justowanyTekstCiagiem linijki pobieraj je
  107.                 {
  108.                     slowo.clear();
  109.                     plik >> slowo;
  110.                     tekst+=slowo+" ";
  111.                 }
  112.             while(tekst[tekst.length()-1]==' ')
  113.                 tekst=tekst.substr(0,tekst.length()-1);
  114.             justowanie(tekst);
  115.             choose=2;
  116.         }
  117.  
  118. }
  119.  
  120. void stdstr()
  121. {  
  122.     string tekst;
  123.     cout <<"Podaj tekst, ktory ma zostac wyjustowany: ";
  124.     cin.clear();
  125.     cin.sync();
  126.     getline(cin, tekst);
  127.     justowanie(tekst);
  128. }
  129.  
  130.  
  131.  
  132. main()
  133. {
  134.     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";
  135.     if(start()) //Funkcja sprawdza czy wczytac tekst ze standardowego wejscia czy z pliku
  136.         zpliku();
  137.     else
  138.         stdstr();
  139.    
  140.     return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement