diff --git a/sem2/OvsyannikovaVA/MINI_3/input.txt b/sem2/OvsyannikovaVA/MINI_3/input.txt new file mode 100644 index 00000000..3f95ed8e --- /dev/null +++ b/sem2/OvsyannikovaVA/MINI_3/input.txt @@ -0,0 +1,6 @@ +Hello world +C++ programming is fun +Lambda expressions +STL algorithms +Short +A very long string just for testing purposes \ No newline at end of file diff --git a/sem2/OvsyannikovaVA/MINI_3/main.cpp b/sem2/OvsyannikovaVA/MINI_3/main.cpp new file mode 100644 index 00000000..7503787b --- /dev/null +++ b/sem2/OvsyannikovaVA/MINI_3/main.cpp @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#include + +int main() { + char* locale = setlocale(LC_ALL, ""); + + std::ifstream file("input.txt"); + std::vector lines; + std::string line; + + if (file.is_open()) { + while (std::getline(file, line)) { + lines.push_back(line); + } + file.close(); + } + + int porog; + + std::cout << "Ñòðîêè, äëèíà êîòîðûõ ìåíüøå ïîðîãà, óäàëÿòñÿ. Ââåäèòå ïîðîã: "; + std::cin >> porog; + + auto f1 = [porog](std::string s) { return s.length() < porog; }; + std::vector poroglines = lines; + poroglines.erase(std::remove_if(poroglines.begin(), poroglines.end(), f1), + poroglines.end()); + + auto f2 = [](std::string s) { + std::replace(s.begin(), s.end(), ' ', '_'); + return s; + }; + std::vector lineswospace; + for (auto line : lines) { + lineswospace.push_back(f2(line)); + } + + std::string word; + std::cout << "Ââåäèòå ñëîâî äëÿ ïîèñêà: "; + std::cin >> word; + + auto f3 = [&word](std::string str) -> bool { + return str.find(word) != std::string::npos; + }; + + std::vector found; + for (auto line : lines) { + if (f3(line)) { + found.push_back(line); + } + } + + auto f4 = [](char c) { return c != '_'; }; + int allchars = 0; + + for (auto str : lines) { + allchars += std::count_if(str.begin(), str.end(), f4); + } + + std::vector lengthstr; + auto f5 = [](std::string str) -> int { return str.length(); }; + + for (auto str : lines) { + lengthstr.push_back(f5(str)); + } + + // ââîä + std::ofstream file2("output.txt"); + + file2 << "ÈÑÕÎÄÍÛÉ ÂÅÊÒÎÐ ÑÒÐÎÊ:\n"; + for (int i = 0; i < lines.size(); ++i) { + file2 << " " << std::setw(4) << (i + 1) << ". \"" << lines[i] << "\"\n"; + } + + file2 << "\nÂÅÊÒÎÐ ÑÒÐÎÊ ÏÎÑËÅ ÓÄÀËÅÍÈß ÊÎÐÎÒÊÈÕ ÑÒÐÎÊ:\n"; + file2 << " Ïîðîã: " << porog << " ñèìâîëîâ\n"; + for (int i = 0; i < poroglines.size(); ++i) { + file2 << " " << std::setw(4) << (i + 1) << ". \"" << poroglines[i] + << "\" (" << poroglines[i].length() << ")\n"; + } + + file2 << "\nÂÅÊÒÎÐ ÑÒÐÎÊ ÏÎÑËÅ ÇÀÌÅÍÛ ÏÐÎÁÅËΠÍÀ \"_\":\n"; + for (int i = 0; i < lineswospace.size(); ++i) { + file2 << " " << std::setw(4) << (i + 1) << ". \"" << lineswospace[i] + << "\"\n"; + } + + file2 << "\nÐÅÇÓËÜÒÀÒ ÏÎÈÑÊÀ ÇÀÄÀÍÍÎÃÎ ÑËÎÂÀ:\n"; + file2 << "Èñêîìîå ñëîâî: " << word << "\n"; + for (int i = 0; i < found.size(); ++i) { + file2 << " " << (i + 1) << ". " << found[i] << "\n"; + } + + file2 << "\nÎÁÙÅÅ ÊÎËÈ×ÅÑÒÂÎ ÑÈÌÂÎËΠÁÅÇ \"_\": " << allchars << "\n"; + + file2 << "\nÂÅÊÒÎÐ ÄËÈÍ ÑÒÐÎÊ:\n"; + for (int i = 0; i < lengthstr.size(); ++i) { + file2 << " " << std::setw(4) << (i + 1) << ". " << lengthstr[i] << "\n"; + } +} diff --git a/sem2/OvsyannikovaVA/MINI_3/output.txt b/sem2/OvsyannikovaVA/MINI_3/output.txt new file mode 100644 index 00000000..9099b46e --- /dev/null +++ b/sem2/OvsyannikovaVA/MINI_3/output.txt @@ -0,0 +1,34 @@ +ÈÑÕÎÄÍÛÉ ÂÅÊÒÎÐ ÑÒÐÎÊ: + 1. "Hello world" + 2. "C++ programming is fun" + 3. "Lambda expressions" + 4. "STL algorithms" + 5. "Short" + 6. "A very long string just for testing purposes" + +ÂÅÊÒÎÐ ÑÒÐÎÊ ÏÎÑËÅ ÓÄÀËÅÍÈß ÊÎÐÎÒÊÈÕ ÑÒÐÎÊ: + Ïîðîã: 20 ñèìâîëîâ + 1. "C++ programming is fun" (22) + 2. "A very long string just for testing purposes" (44) + +ÂÅÊÒÎÐ ÑÒÐÎÊ ÏÎÑËÅ ÇÀÌÅÍÛ ÏÐÎÁÅËΠÍÀ "_": + 1. "Hello_world" + 2. "C++_programming_is_fun" + 3. "Lambda_expressions" + 4. "STL_algorithms" + 5. "Short" + 6. "A_very_long_string_just_for_testing_purposes" + +ÐÅÇÓËÜÒÀÒ ÏÎÈÑÊÀ ÇÀÄÀÍÍÎÃÎ ÑËÎÂÀ: +Èñêîìîå ñëîâî: world + 1. Hello world + +ÎÁÙÅÅ ÊÎËÈ×ÅÑÒÂÎ ÑÈÌÂÎËΠÁÅÇ "_": 114 + +ÂÅÊÒÎÐ ÄËÈÍ ÑÒÐÎÊ: + 1. 11 + 2. 22 + 3. 18 + 4. 14 + 5. 5 + 6. 44