Advertisement
ebx

Fajlovi Stojs Lab9

ebx
Jan 22nd, 2013
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5. #include <cctype>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. void nadjiSlova(string, vector<char>&);
  11. void nadjiRijeci(string, vector<string>&);
  12. void nadjiCifre(string, vector<int>&);
  13. void nadjiBrojeve(string, vector<string>&);
  14.  
  15. void razdvoji();
  16. void spoji();
  17.  
  18. int main() {
  19.     cout << "<<< Razdvajanje (analiza) >>>" << endl;
  20.     razdvoji();
  21.  
  22.     cout << endl;
  23.  
  24.     cout << "<<< Spajanje 2 datoteke >>>" << endl;
  25.     spoji();
  26.  
  27.     return 0;
  28. }
  29.  
  30. void nadjiSlova(string linija, vector<char> &vec) {
  31.     for (unsigned int i = 0; i < linija.length(); i++) {
  32.         if (isalpha(linija[i])) {
  33.             if (find(vec.begin(), vec.end(), linija[i]) == vec.end()) {
  34.                 vec.push_back(linija[i]);
  35.             }
  36.         }
  37.     }
  38. }
  39.  
  40. void nadjiRijeci(string linija, vector<string>& vec) {
  41.     string rijec = "";
  42.     bool dareForMore;
  43.     for (unsigned int i = 0; i < linija.length(); i++) {
  44.         if (isalpha(linija[i])) {
  45.             rijec += linija[i];
  46.             i++;
  47.             dareForMore = true;
  48.             while (dareForMore) {
  49.                 if (isalpha(linija[i])) {
  50.                     rijec += linija[i];
  51.                     i++;
  52.                 }
  53.                 else {
  54.                     dareForMore = false;
  55.                 }
  56.             }
  57.             if (find(vec.begin(), vec.end(), rijec) == vec.end()) {
  58.                 vec.push_back(rijec);
  59.             }
  60.             rijec = "";
  61.         }
  62.     }
  63. }
  64.  
  65. void nadjiCifre(string linija, vector<int> &vec) {
  66.     for (unsigned int i = 0; i < linija.length(); i++) {
  67.         if (isdigit(linija[i])) {
  68.             if (find(vec.begin(), vec.end(), linija[i] - '0') == vec.end()) {
  69.                 vec.push_back(linija[i] - '0');
  70.             }
  71.         }
  72.     }
  73. }
  74.  
  75. void nadjiBrojeve(string linija, vector<string>& vec) {
  76.     string broj = "";
  77.     bool dareForMore;
  78.     for (unsigned int i = 0; i < linija.length(); i++) {
  79.         if (isdigit(linija[i])) {
  80.             broj += linija[i];
  81.             i++;
  82.             dareForMore = true;
  83.             while (dareForMore) {
  84.                 if (isdigit(linija[i])) {
  85.                     broj += linija[i];
  86.                     i++;
  87.                 }
  88.                 else {
  89.                     dareForMore = false;
  90.                 }
  91.             }
  92.             if (find(vec.begin(), vec.end(), broj) == vec.end()) {
  93.                 vec.push_back(broj);
  94.             }
  95.             broj = "";
  96.         }
  97.     }
  98. }
  99.  
  100. void razdvoji() {
  101.     string linija;
  102.     vector<char> slova;
  103.     vector<int> cifre;
  104.     vector<string> rijeci, brojevi;
  105.     ifstream fajl ("txt.txt");
  106.     if (fajl.is_open()) {
  107.         while (fajl.good()) {
  108.             getline(fajl, linija);
  109.             nadjiSlova(linija, slova);
  110.             nadjiRijeci(linija, rijeci);
  111.             nadjiCifre(linija, cifre);
  112.             nadjiBrojeve(linija, brojevi);
  113.         }
  114.     }
  115.     fajl.close();
  116.  
  117.     cout << "Slova: ";
  118.     for (unsigned int i = 0; i < slova.size(); i++) {
  119.         cout << slova[i] << " ";
  120.     }
  121.     cout << endl;
  122.  
  123.     cout << "Rijeci: ";
  124.     for (unsigned int i = 0; i < rijeci.size(); i++) {
  125.         cout << rijeci[i] << " ";
  126.     }
  127.     cout << endl;
  128.  
  129.     cout << "Cifre: ";
  130.     for (unsigned int i = 0; i < cifre.size(); i++) {
  131.         cout << cifre[i] << " ";
  132.     }
  133.     cout << endl;
  134.  
  135.     cout << "Brojevi: ";
  136.     for (unsigned int i = 0; i < brojevi.size(); i++) {
  137.         cout << brojevi[i] << " ";
  138.     }
  139.     cout << endl;
  140. }
  141.  
  142. void spoji() {
  143.     string linija;
  144.     vector<char> slova;
  145.     fstream fajl ("txt1.txt", ios::in);
  146.     if (fajl.is_open()) {
  147.         while (fajl.good()) {
  148.             getline(fajl, linija);
  149.             nadjiSlova(linija, slova);
  150.         }
  151.     }
  152.     fajl.close();
  153.  
  154.     fajl.open("txt2.txt", ios::in);
  155.     if (fajl.is_open()) {
  156.         while (fajl.good()) {
  157.             getline(fajl, linija);
  158.             nadjiSlova(linija, slova);
  159.         }
  160.     }
  161.     fajl.close();
  162.  
  163.     fajl.open("rez.txt", ios::out);
  164.     if (fajl.is_open()) {
  165.         fajl << "Rezultat analize: ";
  166.         for (unsigned int i = 0; i < slova.size(); i++) {
  167.             fajl << slova[i] << " ";
  168.         }
  169.     }
  170.     fajl.close();
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement