Advertisement
DasShelmer

9.s.2

Dec 6th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. using namespace std;
  5.  
  6. bool correctLine(string& l, const string& pattern) {
  7.     const char digit = 'x';// символ для цифр(циферный символ для шаблона)
  8.     int lenght = pattern.length();
  9.     if (l.length() != lenght)// если длина не совпадает с длиной шаблона, то строка не подходит
  10.         return false;
  11.     for (int i = 0; i < lenght; i++)
  12.         // если символ в шаблоне циферный, то проверяем на "циферность" символа в строке,
  13.         // иначе просто сопоставляем символы строки и шаблона
  14.         if (pattern[i] == digit ? !isdigit(l.at(i)) : pattern[i] != l[i])
  15.             return false;
  16.     return true;
  17. }
  18. int main() {
  19.     ifstream in ("f1.txt");
  20.     ofstream out("f2.txt");
  21.     const string patterns[3] = { "xxx-xxx", "xxx-xx-xx", "xx-xx-xx" };
  22.     string temp;
  23.  
  24.     while (in)// пока файл не кончился
  25.         if (in >> temp) // пока он содержит слова, записываем в temp слово
  26.             for (auto x : patterns) // аналог for(int i = 0; i < 3; i++), x = patterns[i]
  27.                 if (correctLine(temp, x)) {// если хоть одно совпадение
  28.                     out << temp << endl;// запись
  29.                     break; // выход из последующих сравнений, для оптимизации
  30.                 }
  31.     in.close();
  32.     out.close();
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement