Advertisement
bgeri74

tomi

Feb 3rd, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <ctype.h>
  4.  
  5. using namespace std;
  6.  
  7. //a felhasználó mondatainak tárolására szolgáló osztály
  8. class UserInput{
  9.     string originalSentence;
  10.     vector <string> words;
  11.     char ending; //a mondatvégi irásjel: ! . vagy ? vagy netán semmi
  12.  
  13. public:
  14.  
  15.     //konstruktor
  16.     UserInput(){
  17.         ending = 'u'; //mint unknown
  18.     }
  19.  
  20.     //ha az adott string nem tartalmaz mondatvégi írásjelet, true értéket ad vissza, ellenkező esetben false értéket
  21.     bool valid(string str){
  22.         bool result = true;
  23.  
  24.         for(int i = 0;i < str.length(); i++){
  25.             if(str[i] == '.' || str[i] == '!' || str[i] == '?')
  26.                 result = false;
  27.         }
  28.  
  29.         return result;
  30.     }
  31.  
  32.     void setSentence(){
  33.         for(int i = 0; i < words.size(); i++){
  34.             originalSentence += words[i];
  35.             if(i+1 != words.size())
  36.                 originalSentence += ' ';
  37.         }
  38.  
  39.         //végül jöhet a mondatvégi írásjel
  40.         if(ending != 'u')//tehát ha van ténylegesen lezáró írásjel(nem hagyták el)
  41.             originalSentence += ending;
  42.     }
  43.  
  44.     void getInput(){
  45.         string temp;
  46.  
  47.         while(true){
  48.             cin >> temp;//bekérjük a következő stringet
  49.  
  50.             if(valid(temp)){//ha érvényes, el is mentjük
  51.                 words.push_back(temp);
  52.             }
  53.             else{//különben pedig az utolsó elemét elmentjük mint mondatvégi irásjelet, a string többi részét pedig elmentjük
  54.                 ending = temp[temp.length() - 1];
  55.                 string result = "";
  56.                 for(int i = 0; i < temp.length() - 1 ; i++)
  57.                     result += temp[i];
  58.                 words.push_back(result);
  59.                 break;
  60.             }
  61.  
  62.             //ha entert ütöttek, kilépünk a ciklusból
  63.             if(cin.get() == '\n'){
  64.                 break;
  65.             }
  66.         }
  67.  
  68.         //a szavakből összeállítja a teljes mondatot
  69.         setSentence();
  70.     }
  71.  
  72.     //a szavakat jeleníti meg
  73.     void const displayWords(){
  74.         cout <<"Words in the sentence: " << endl;
  75.         for(int i = 0, n = words.size(); i < n; i++)
  76.             cout << words[i] <<endl;
  77.     }
  78.  
  79.     //a szavak számát adja vissza
  80.     int const getNumberOfWords(){return words.size();}
  81.  
  82.     //az összeállított teljes mondatot adja vissza
  83.     string const getSentence(){return originalSentence;}
  84.  
  85. };
  86.  
  87. int main()
  88. {
  89.  
  90.     UserInput input;
  91.  
  92.     input.getInput();
  93.     input.displayWords();
  94.  
  95.     string str = input.getSentence();
  96.     cout <<str<<endl;
  97.     cout<<input.getNumberOfWords()<<endl;
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement