kamilosxd678

AiSD LAB - Zliczanie wystąpień słów w tekście

Apr 13th, 2012
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <map>
  5. #include <queue>
  6.  
  7. using namespace std;
  8.  
  9. struct SBinaryTree{
  10.        
  11. };
  12.  
  13. bool polishLetter(char& input){
  14.     switch((int)input){
  15.         case (-71): //ą
  16.                     return true;
  17.                     break;
  18.         case (-91): //Ą
  19.                     input = (char)(-71); //zamień na małą
  20.                     return true;
  21.                     break;
  22.         case (-26): //ć
  23.                     return true;
  24.                     break;
  25.         case (-58): //Ć
  26.                     input = (char)(-26); //zamień na małą
  27.                     return true;
  28.                     break;
  29.         case (-22): //ę
  30.                     return true;
  31.                     break;
  32.         case (-54): //Ę
  33.                     input = (char)(-22); //zamień na małą
  34.                     return true;
  35.                     break;
  36.         case (-77): //ł
  37.                     return true;
  38.                     break;
  39.         case (-93): //Ł
  40.                     input = (char)(-77); //zamień na małą
  41.                     return true;
  42.                     break;
  43.         case (-15): //ń
  44.                     return true;
  45.                     break;
  46.         case (-47): //Ń
  47.                     input = (char)(-15); //zamień na małą
  48.                     return true;
  49.                     break;
  50.         case (-13): //ó
  51.                     return true;
  52.                     break;
  53.         case (-45): //Ó
  54.                     input = (char)(-13); //zamień na małą
  55.                     return true;
  56.                     break;
  57.         case (-100): //ś
  58.                     return true;
  59.                     break;
  60.         case (-116): //Ś
  61.                     input = (char)(-100); //zamień na małą
  62.                     return true;
  63.                     break;
  64.         case (-97): //ź
  65.                     return true;
  66.                     break;
  67.         case (-113): //Ź
  68.                     input = (char)(-97); //zamień na małą
  69.                     return true;
  70.                     break;
  71.         case (-65): //ż
  72.                     return true;
  73.                     break;
  74.         case (-81): //Ż
  75.                     input = (char)(-65); //zamień na małą
  76.                     return true;
  77.                     break;
  78.     }
  79.     return false;
  80. }
  81. void smallLetters(string& input){
  82.     for(int i = 0; i < input.length(); i++){
  83.         if(input[i] >= 'A' && input[i] <= 'Z')
  84.             input[i] = (char)(input[i] + 32);
  85.         if((input[i] < 'a' || input[i] > 'z') && !polishLetter(input[i]))
  86.             input.erase(i);
  87.     }
  88. }
  89.  
  90. int main(){
  91.     string temp;
  92.     //Przerabianie
  93.     queue<string> words;
  94.     fstream inputText;
  95.     inputText.open("text.txt", ios::in);
  96.     if(inputText.good()){
  97.         while(inputText){
  98.             inputText >> temp;
  99.             smallLetters(temp);
  100.             if(!temp.empty())
  101.                 words.push(temp);
  102.             temp.clear();
  103.         }
  104.     }
  105.     inputText.close();
  106.     map<string, int> wordsOccurence;
  107.     //Wysłanie pierwszego wyrazu do mapy
  108.     temp = words.front();
  109.     words.pop();
  110.     wordsOccurence[temp] = 1;
  111.     map<string,int>::iterator it;
  112.     temp.clear();
  113.     while(!words.empty()){
  114.         temp = words.front();
  115.         words.pop();
  116.         if(wordsOccurence.find(temp) != wordsOccurence.find("!"))
  117.             wordsOccurence[temp]++;
  118.         else
  119.             wordsOccurence[temp] = 1;
  120.         temp.clear();
  121.     }
  122.  
  123.     fstream outputText;
  124.     outputText.open("output.txt", ios::out);
  125.     if(outputText.good()){
  126.         for(map<string,int>::iterator it = wordsOccurence.begin(); it != wordsOccurence.end(); it++)
  127.             outputText << "Słowo " << (*it).first << " wystąpiło " << (*it).second << " razy" << endl;
  128.     }
  129.     outputText.close();
  130.     return 0;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment