Advertisement
kaunas163

help20150323

Mar 23rd, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. /* Išspręskite problemą programos pagalba, kuri žodžius, turinčius daugiau negu
  2.  * 4 priebalses atspausdintų atgaline tvarka (t.y. programos = somargorp)
  3.  * (nuskaitytų duomenis iš failo, o pakeistą tekstą parašytų į kitą failą).
  4.  
  5.  Reikalavimai:
  6.  1. Parašykite programą, kuri nuskaito tekstą iš failo ir išveda į kitą failą.
  7.  2. Vartotojas įveda įvesties ir išvesties failų vardus.
  8.  3. Teksto keitimui panaudojama funkcija arba procedūra.
  9.  4. Žodžiai atskiriami tarpu/tarpais.
  10.  5. Žodis tai simbolių seka (apart tarpo).
  11.  6. Tekstas keičiamas kiekvienoje eilutėje, t.y. tekstas su eilutėmis.
  12.  7. Teksto ilgis ribojamas iki 255 simbolių, likę simboliai nenaudojami
  13.  teksto keitime.
  14.  8. Programoje turi būti I/O failų klaidų valdymas. */
  15.  
  16. #include <fstream>
  17. #include <iomanip>
  18. #include <iostream>  
  19. #include <string>
  20. using namespace std;
  21.  
  22. string pradinis, rezultatu; // failai
  23.  
  24. void TekstoAnalize();
  25. void PriebalsiuPaieska(string eil);
  26. void IrasytiAtvirkstineTvarka(string zodis);
  27.  
  28. int main()
  29. {
  30.     setlocale(LC_ALL, "Lithuanian");
  31.     cout << "Duomenų failas: "; cin >> pradinis;
  32.     cout << "Rezultatų failas: "; cin >> rezultatu;
  33.  
  34.     return 0;
  35. }
  36.  
  37. /* Teksto skaitymas po vieną eilutę ir analizavimas. */
  38. void TekstoAnalize()
  39. {
  40.     ifstream fd(pradinis.c_str());
  41.     string eil;
  42.     while (!fd.eof())
  43.     {
  44.         getline(fd, eil);
  45.         PriebalsiuPaieska(eil);
  46.     }
  47.     fd.close();
  48. }
  49.  
  50. /* Eilutėje išskiria žodžius, kuriuose ieško priebalsių skaičiaus.
  51.  * eil - eilutė, kurioje ieškomi žodžiai */
  52. void PriebalsiuPaieska(string eil)
  53. {
  54.     eil = eil + " ";
  55.     int zpr, zpb = 0;  // žodžio pradžia ir pabaiga eilutėje
  56.     zpr = eil.find_first_not_of(' ', zpb);
  57.     while (zpr != -1)
  58.     {
  59.         zpb = eil.find_first_of(' ', zpr);
  60.         eil.substr(zpr, zpb - zpr); // žodžio išskyrimas
  61.  
  62.         for (int i = 0; i < eil.length(); i++)
  63.         {
  64.             // papildysi if'ą jei trūksta
  65.             // dar galima ir trumpiau jį aprašyt, bet tingiu galvot ar bandyt prisimint
  66.             if (eil.at(i) != 'a' || eil.at(i) != 'e' || eil.at(i) != 'i' || eil.at(i) != 'y' || eil.at(i) != 'o' ||
  67.                                                     eil.at(i) != 'u')
  68.                 IrasytiAtvirkstineTvarka(eil);
  69.         }
  70.  
  71.         zpr = eil.find_first_not_of(' ', zpb);
  72.     }
  73. }
  74.  
  75. /* Įrašo žodį į failą atgaline tvarka.
  76.  * zodis - žodis kurį įrašo */
  77. void IrasytiAtvirkstineTvarka(string zodis)
  78. {
  79.     ofstream fout(rezultatu, ios::app);
  80.     zodis.reserve();
  81.     fout << zodis << endl;
  82.     fout.close();
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement