Вывести на печать список слов, имеющих приставку, задаваемую с терминала - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д