Вывести на печать список слов, имеющих приставку, задаваемую с терминала - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Разработать процедуру или функцию, выполняющую заданную операцию над строками. Предусмотреть и описать реакцию на некорректное задание параметров.

Не использовать

имеющиеся в языке средства обработки строк. Вывести на печать список слов, имеющих приставку (несколько букв), задаваемую с терминала Подскажите пожалуйста хотя бы идеи и возможности как это можно реализовать... без средств обработки строк..

Решение задачи: «Вывести на печать список слов, имеющих приставку, задаваемую с терминала»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #define N 256
  4. #define D " ,.!?:;"
  5.  
  6. int isWord(char *ps)
  7. {
  8.   char d[]=" .,;:!?\n\r\t";
  9.   char *pd;
  10.   for( pd = d; *pd; pd++)
  11.   if(*ps == *pd)return 0;
  12.   return 1;
  13. }
  14. /*-------------------------*/
  15. void viviod_slov_s_prist( char *str)
  16. {
  17.   char b[10]="";
  18.   int j = 0, l = 0, i;
  19.   char *c, *s, *n, *t;
  20.   s=b;
  21.   printf("Введите приставку: ");
  22.   if (fgets(b,10,stdin) == NULL) {puts("Error in input!\n"); return;}
  23.   while(b[l++] != '\n');
  24.   --l;
  25.   t = str;
  26.   i = 0;
  27.   while(*t)
  28.   {
  29.     i = 0;
  30.     if( isWord(t) && *t )
  31.     {
  32.       n = c = t;
  33.       while( isWord(t) && *t )
  34.       {
  35.         i++;
  36.         t++;
  37.       }
  38.       if( i < l)
  39.           continue;
  40.       else
  41.           for( j = 0; j < l; ++j )
  42.           {
  43.              if(b[j] == *c){++c; continue;} else break;
  44.           }
  45.       if(j == l)
  46.       {
  47.         for(j = 0; j < i; ++j)      
  48.          printf("%c", *n++ );printf("\n");
  49.  
  50.       }
  51.     } else t++;
  52.   }
  53. return;
  54. }
  55. /*-------------------------*/
  56. int main(void)
  57. {
  58.   setlocale(LC_ALL,"RU");
  59.   char a[N]="приходи ко мне на приём, получиш приказ!";
  60.   printf("Исходная строка: %s\n", a);
  61.   viviod_slov_s_prist( a );
  62.  return (0);
  63. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяются макросы N и D
  3. Функция isWord проверяет, является ли символ словом, и возвращает 0, если да, и 1, если нет
  4. Функция viviod_slov_s_prist запрашивает у пользователя приставку, сохраняет ее в переменной b
  5. Переменная l инициализируется нулем и используется для определения конца строки
  6. Переменная t инициализируется как копия строки str
  7. В цикле while перебираются все символы строки t
  8. Если текущий символ является словом и не является концом строки, то начинается поиск следующего слова с этой приставки
  9. Если следующее слово найдено, то продолжается поиск слов с этой приставки, пока не будет найден конец слова или не будет достигнута длина строки b
  10. Если длина строки b достигнута, то найденное слово выводится на печать
  11. В конце программы выводится исходная строка a

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы