Вывести на печать список слов, имеющих приставку, задаваемую с терминала - C (СИ)
Формулировка задачи:
Разработать процедуру или функцию, выполняющую заданную операцию над строками. Предусмотреть и описать реакцию на некорректное задание параметров.
Не использовать
имеющиеся в языке средства обработки строк. Вывести на печать список слов, имеющих приставку (несколько букв), задаваемую с терминала Подскажите пожалуйста хотя бы идеи и возможности как это можно реализовать... без средств обработки строк..Решение задачи: «Вывести на печать список слов, имеющих приставку, задаваемую с терминала»
textual
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- #define N 256
- #define D " ,.!?:;"
- int isWord(char *ps)
- {
- char d[]=" .,;:!?\n\r\t";
- char *pd;
- for( pd = d; *pd; pd++)
- if(*ps == *pd)return 0;
- return 1;
- }
- /*-------------------------*/
- void viviod_slov_s_prist( char *str)
- {
- char b[10]="";
- int j = 0, l = 0, i;
- char *c, *s, *n, *t;
- s=b;
- printf("Введите приставку: ");
- if (fgets(b,10,stdin) == NULL) {puts("Error in input!\n"); return;}
- while(b[l++] != '\n');
- --l;
- t = str;
- i = 0;
- while(*t)
- {
- i = 0;
- if( isWord(t) && *t )
- {
- n = c = t;
- while( isWord(t) && *t )
- {
- i++;
- t++;
- }
- if( i < l)
- continue;
- else
- for( j = 0; j < l; ++j )
- {
- if(b[j] == *c){++c; continue;} else break;
- }
- if(j == l)
- {
- for(j = 0; j < i; ++j)
- printf("%c", *n++ );printf("\n");
- }
- } else t++;
- }
- return;
- }
- /*-------------------------*/
- int main(void)
- {
- setlocale(LC_ALL,"RU");
- char a[N]="приходи ко мне на приём, получиш приказ!";
- printf("Исходная строка: %s\n", a);
- viviod_slov_s_prist( a );
- return (0);
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются макросы N и D
- Функция isWord проверяет, является ли символ словом, и возвращает 0, если да, и 1, если нет
- Функция viviod_slov_s_prist запрашивает у пользователя приставку, сохраняет ее в переменной b
- Переменная l инициализируется нулем и используется для определения конца строки
- Переменная t инициализируется как копия строки str
- В цикле while перебираются все символы строки t
- Если текущий символ является словом и не является концом строки, то начинается поиск следующего слова с этой приставки
- Если следующее слово найдено, то продолжается поиск слов с этой приставки, пока не будет найден конец слова или не будет достигнута длина строки b
- Если длина строки b достигнута, то найденное слово выводится на печать
- В конце программы выводится исходная строка a
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д