Подсчитать количество слов в тексте, которые заканчиваются на гласную букву - C (СИ)
Формулировка задачи:
С клавиатуры вводится строка. Разработать программу, которая реализует указанные действия.
а) подсчитывает количество слов в тексте, которые заканчиваются на гласную букву;
б) выводит на экран все слова, длина которых меньше пяти символов;
в) удаляет все слова, которые содержат хотя бы одну латинскую букву.
Буду благодарен)
хоть один из пунктов)
Решение задачи: «Подсчитать количество слов в тексте, которые заканчиваются на гласную букву»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <locale.h>
- #define N 256
- //Функция v_Slove проверяет - настроен ли
- //указатель ps на слово или нет,
- //возвращая 1 в первом случае и 0 во втором
- //Короче говоря - "это слово или не слово?"
- int v_Slove(char *ps)
- {
- char d[]=" .,;:!?\n\0";
- char *pa=ps;
- int i;
- for(i=0;i<9;i++)
- {
- if(*pa==d[i])return 0;
- }
- return 1;
- }
- //Функция nach_slova проверяет
- // указатель на начале слова(возвращая 1)
- //или иначе возвращает 0
- int nach_slova(char *nach)
- {
- char d[]=" .,;:!?";
- int i;
- if(v_Slove(nach))
- for(i=0;i<7;i++)
- {
- if(*(nach-1)==d[i])return 1;
- }
- return 0;
- }
- //Функция glasn проверяет гласная ли это буква(1) или нет(0)?
- int glasn(char *gl)
- {
- int i;
- char g[]="уеэоаыяиюУЕЭОАЫЯИЮ";
- for(i=0;i<18;i++)
- {
- if(*gl==g[i])return 1;
- }
- return 0;
- }
- //Функция slovo_s_glasn проверяет - это слово
- //с гласной буквой(1) или нет(0)?
- //Принимает указатель на начало слова
- int slovo_s_glasn(char *ps)
- {
- char *pps=ps;
- while(v_Slove(pps))pps++;
- pps--;
- return glasn(pps);
- }
- //Функция kol_simv подсчитывает количество символов в слове.
- //Возвращает количество симв.
- //Принимает указатель на начало слова
- int kol_simv(char *ps)
- {
- int c=0;
- while(v_Slove(ps))
- {
- c++;
- ps++;
- }
- return c;
- }
- //Функция latin проверяет - латинская ли это буква(1) или нет(0)?
- //Принимает указатель на букву
- int latin(char *lat)
- {
- return ((*lat>='\x61')&&(*lat<='\x7a'))||((*lat>='\x41')&&(*lat<='\x5a'));
- }
- //Функция slovo_s_latin проверяет - это слово с латинской буквой(1) или нет(0)?
- //Принимает указатель на начало слова
- int slovo_s_latin(char *ps)
- {
- char*pps=ps;
- while(v_Slove(pps))
- {
- if(latin(pps))return 1;
- pps++;
- }
- return 0;
- }
- //Функция kol_sl_s_gl подсчитывает количество слов с гласной буквой
- int kol_sl_s_gl(char *a)
- {
- int kol_sl,i;
- for(i=0,kol_sl=0;a[i]!='\0';i++)
- {
- if(nach_slova(&a[i]))
- {
- if(slovo_s_glasn(&a[i]))kol_sl++;
- }
- }
- return kol_sl;
- }
- //Функция slova_men_5_simv выводит на экран все слова , которые меньше 5 символов
- void slova_men_5_simv(char *a)
- {
- int kol_sl,i;
- char *n;
- for(i=0,kol_sl=0;a[i]!='\0';i++)
- {
- if(nach_slova(&a[i]))
- {
- if(kol_simv(&a[i])<5)
- {
- n=&a[i];
- while(v_Slove(n))
- {
- printf("%c",*n);
- n++;
- }
- printf("\n");
- }
- }
- }
- }
- //Функция udal_sl_s_lat удаляет все слова которые имеют хотя бы одну лат. букву
- char *udal_sl_s_lat(char *a)
- {
- int i;
- char *k;
- for(i=0;a[i]!='\0';i++)
- {
- if(nach_slova(&a[i]))
- {
- if(slovo_s_latin(&a[i]))
- {
- k=&a[i]+kol_simv(&a[i]);
- a[i]='\0';
- strcat(&a[i],k);
- }
- }
- }
- return a;
- }
- int main(void)
- {
- setlocale(LC_ALL,"RU");
- char A[N]="Привед медвeд, фаsf aaas ggg медведы, пар запара par.";
- printf("Исходная строка: %s\n",A);
- printf("Количество слов с гласной в конце: %d\n",kol_sl_s_gl(A));
- printf("Слова меньше 5 букв:\n");
- slova_men_5_simv(A);
- printf("Строка с удалёнными словами имевших хотя бы одну лат. букву: %s\n",udal_sl_s_lat(A));
- return (0);
- }
Объяснение кода листинга программы
- Функция v_Slove() проверяет, является ли символ словом или нет.
- Функция nach_slova() проверяет, является ли указатель на начале слова.
- Функция glasn() проверяет, является ли буква гласной.
- Функция slovo_s_glasn() проверяет, является ли слово с гласной буквой в конце.
- Функция kol_simv() подсчитывает количество символов в слове.
- Функция latin() проверяет, является ли буква латинской.
- Функция slovo_s_latin() проверяет, является ли слово с латинской буквой в середине.
- Функция udal_sl_s_lat() удаляет слова, содержащие хотя бы одну латинскую букву.
- В функции main() задается исходная строка, выводится количество слов с гласной в конце, выводятся слова длиной меньше 5 символов, и выводится строка с удаленными словами, содержащими хотя бы одну латинскую букву.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д