Advertisement
codegod313

Order5(sk)

Dec 25th, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale.h>
  3.  
  4. using namespace std;
  5.  
  6. int str_len(char *s) { // функция, которая находит длину строки
  7.     int i = 0;
  8.     int k = 0;
  9.     while (s[i]) {
  10.         k++;
  11.         i++;
  12.     }
  13.     return k;
  14. }
  15.  
  16. void init_s(char * &s, int a) { // функция посимвольного ввода до нажатия Enter
  17.     int i = 0;
  18.     while (i == 0) {
  19.         cout << "Введите строку " <<a << ":" << endl;
  20.         s[0] = getchar();
  21.         while (s[i] != '\n') {
  22.             s = (char *)realloc(s, sizeof(char)*(++i + 1));
  23.             s[i] = getchar();
  24.         }
  25.         s[i] = '\0';
  26.     }
  27. }
  28.  
  29. int main()
  30. {
  31.     setlocale(LC_ALL, "Russian");
  32.     char *s = (char *)malloc(sizeof(char));
  33.     char *s1 = (char *)malloc(sizeof(char));
  34.     init_s(s, 1); //ввод основной строки
  35.     rewind(stdin);
  36.     init_s(s1, 2);// ввод шаблона
  37.     int i = 0;
  38.     while (s[i]){
  39.         if (s[i] == ' '|| i == 0) { // если нашли начало слова начинаем его сранивать с шаблоном
  40.             if (i != 0) i++;
  41.             int j = 0;
  42.             int i1 = i;
  43.             while ((((s[i1] == s1[j] || s1[j]+32 == s[i1] || s[i1]+32 == s1[j]) && s1[j] != '*') || s1[j] == '?')&&s[i1] && s1[j]) { // сравниваем
  44.                 i1++;
  45.                 j++;
  46.             }
  47.             if (j == str_len(s1) || s1[j] == '*') { // проверяем совпало ли слово
  48.                 if (j == str_len(s1) && s[i1] != ' ') {
  49.                     i++;
  50.                     continue;
  51.                 }
  52.                 int l = i, r = i1;
  53.                 while (s[r] != ' ' && s[r]) r++;
  54.                 for (int u = l; u < r; u++) { // выводим слово
  55.                     cout << s[u];
  56.                 }
  57.                 cout << endl;
  58.             }
  59.         }
  60.         i++;
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement