Gistrec

ОП Лабораторная 4

Dec 15th, 2016
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. // !!! Необходимо внести правило "_CRT_SECURE_NO_WARNINGS" в "Определения препроцессора" в настройках проекта
  2. // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
  3. #include <stdafx.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7.  
  8.     /*
  9.      * 30 слов по 8 символов
  10.      * разделитель " ", конец "."\
  11.      * Заменить "ing" на "ed"
  12.      */
  13.     int main(void) {
  14.         /*
  15.          * Инициализация программы
  16.          */
  17.         char A[31][9]; // Массив со словами. В конце каждого слова ' '. Конец '.'
  18.         int world = 0,    // Порядок слова в массиве
  19.             symbol = 0;   // Порядок символа в массиве
  20.  
  21.         /*
  22.          * Ввод всех слов
  23.          */
  24.         char nowChar;
  25.         nowChar = getchar();
  26.         // Пока текущий символ не .(конец слов), повышаем номер вводимого слова на 1
  27.         for (world = 0; nowChar != '.'; A[world][symbol] = '\0', world++){
  28.             // Если текущий символ - пробел,  получаем новый символ
  29.             if (nowChar == ' ') nowChar = getchar();
  30.             // Пока не найдем точку или пробел - заносим слово в массив
  31.             for (symbol = 0; nowChar != '.' && nowChar != ' '; symbol++) {
  32.                 A[world][symbol] = nowChar;
  33.                 nowChar = getchar();
  34.             }
  35.         }
  36.         // Ограничитель. Обозначает конец всех слов.
  37.         A[world][0] = '\0';
  38.  
  39.         /*
  40.         * Перебор всех слов и изменение ing на ed
  41.         */
  42.         char *pos = A[0]; // Указатель на позицию вхождения
  43.         for (world = 0; A[world][0] != '0' ; world++) {
  44.             pos = A[world];
  45.             // Начинаем искать с прошлого вхождения или с нового слова
  46.             while ((pos = strstr(pos, "ing")) != NULL) {
  47.                 *pos = 'e';
  48.                 *(pos + 1) = 'd';
  49.                 // Копируем оставшуюся строку на символ назад
  50.                 strcpy((pos + 2), (pos + 3));
  51.             }
  52.         }
  53.        
  54.         // Вывод получившийся последовательности
  55.         for (world = 0;  A[world][0] != '\0'; world++) {
  56.             printf("%s ", A[world]);
  57.         }
  58.         printf("\n");
  59.     }
Advertisement
Add Comment
Please, Sign In to add comment