kestutis

3 lygis | 2 pamokėlė | Žodžių paieška | 2 versija

Dec 30th, 2013
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3. #include <ctype.h>
  4.  
  5. using namespace std;
  6.  
  7. const char ivedimo_failas[] = "Duomenys.txt";
  8. const char isvedimo_failas[] = "Rezultatai.txt";
  9.  
  10. //Konvertuojamos ASCII raidės į mažesnes.
  11. string sumazinti_raides(string tekstas) {
  12.     for(unsigned i = 0; i < tekstas.length(); ++i)
  13.         tekstas[i] = tolower(tekstas[i]);
  14.     return tekstas;
  15. }
  16.  
  17. //Pašalinam nereikalingus simbolius iš žodžio/teksto galų
  18. string trim(string s) {
  19.     const char nereikalingi_simboliai[] = " ,.-()[]\n\r\t";
  20.     s.erase(0, s.find_first_not_of(nereikalingi_simboliai));//left trim
  21.     s.erase(s.find_last_not_of(nereikalingi_simboliai)+1);//right trim
  22.     return s;
  23. }
  24.  
  25. //„Pradinių“ duomenų skaitymo funkcija tik dėl sąlygos
  26. string ivesti_ieskoma_zodi(ifstream &is_failo) {
  27.     string ieskomas_zodis;
  28.     is_failo >> ieskomas_zodis;
  29.     return ieskomas_zodis;
  30. }
  31.  
  32. //Surasti žodį.
  33. int surasti_zodi(string ieskomas_zodis, ifstream &is_failo) {
  34.     int rasta = 0;
  35.     string teksto_zodis;
  36.  
  37.     ieskomas_zodis = sumazinti_raides(ieskomas_zodis);
  38.     while(is_failo >> teksto_zodis)
  39.         if(ieskomas_zodis == trim(sumazinti_raides(teksto_zodis)))
  40.             ++rasta;
  41.     return rasta;
  42. }
  43.  
  44. //Išvesti rezultatus į failą.
  45. void isvesti(const char isvedimo_failas[], int surasta) {
  46.     ofstream out(isvedimo_failas);
  47.     out << surasta << endl;
  48. }
  49.  
  50. int main() {
  51.     ifstream in(ivedimo_failas);
  52.  
  53.     string ieskome_zodzio = ivesti_ieskoma_zodi(in);
  54.     int surasta = surasti_zodi(ieskome_zodzio, in);
  55.     isvesti(isvedimo_failas, surasta);
  56.    
  57.     //Arba viena eilutė funkciniu dizainu vietoje aukščiau esančių trijų eilučių:
  58.     //isvesti(isvedimo_failas, surasti_zodi(ivesti_ieskoma_zodi(in), in));
  59.  
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment