#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>
#include <iterator>
 
using namespace std;

vector<string> readStringsFromFile(const string& fileName);
vector<string> readStrings(istream& file);
vector<string> filterValues(const vector<string>& words);
ostream &operator<<(ostream &out, const vector<string>& words);
 
int main()
{
    vector<string> finishWords =  readStrings(cin);
    cout << "to sa moje slowa:\n" << finishWords << endl;
    cout << "to sa moje odfiltorwane slowa:\n" << filterValues(finishWords) << endl;
    readStringsFromFile("niedziała.txt");
    return 0;
}
 
//==========================================================================================
 
vector<string> readStringsFromFile(const string& fileName)
{
    ifstream file(fileName, ios::in );
    if (file.good())
    {
         return readStrings(file);
    }
    cerr << "Plik nie istnieje" << endl;
    return vector<string>();
}
//==========================================================================================
vector<string> readStrings(istream& file)
{
    string line;
    vector<string> words;
    while(getline(file , line))
    {
        words.push_back(line);
    }
    return words;
}
//==========================================================================================
bool isValidString(const string& s)
{
     return !std::any_of(s.begin(), s.end(), [](auto ch) { return std::ispunct(ch)!=0; });
}
//==========================================================================================
vector<string> filterValues(const vector<string>& words)
{
    vector<string> result;
    result.reserve(words.size());
    std::copy_if(words.begin(), words.end(), std::back_inserter(result), isValidString);
    return result;
}
//==========================================================================================
ostream &operator<<(ostream &out, const vector<string>& words)
{
    std::ostream_iterator<string> out_it (out, "\n");
    std::copy(words.begin(), words.end(), out_it );
    return out;
}

//==========================================================================================
