Подсчитать количество слов в тексте, которые заканчиваются на гласную букву - 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);
}

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

  1. Функция v_Slove() проверяет, является ли символ словом или нет.
  2. Функция nach_slova() проверяет, является ли указатель на начале слова.
  3. Функция glasn() проверяет, является ли буква гласной.
  4. Функция slovo_s_glasn() проверяет, является ли слово с гласной буквой в конце.
  5. Функция kol_simv() подсчитывает количество символов в слове.
  6. Функция latin() проверяет, является ли буква латинской.
  7. Функция slovo_s_latin() проверяет, является ли слово с латинской буквой в середине.
  8. Функция udal_sl_s_lat() удаляет слова, содержащие хотя бы одну латинскую букву.
  9. В функции main() задается исходная строка, выводится количество слов с гласной в конце, выводятся слова длиной меньше 5 символов, и выводится строка с удаленными словами, содержащими хотя бы одну латинскую букву.

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


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

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

15   голосов , оценка 4.533 из 5
Похожие ответы