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