Программа нужна на C++, без использования string. Если получится написать код максимально кратко, буду благодарен вдвойне.

Дано предложение. Напечатать все его слова, предварительно преобразовав каждое из них по следующему правилу:

в самом длинном слове удалить среднюю (средние) буквы. Принять, что такое слово — единственное.
В задаче принять, что: в рассматриваемом предложении нет начальных и конечных пробелов и символов "-"; количество слов в предложении не превышает 10.

тима156 тима156    3   06.04.2020 00:19    1

Ответы
Владушкаcat Владушкаcat  12.10.2020 16:15

#include <iostream>

#include <cstring>

#include <list>

using namespace std;

char* delItem(char* str, size_t n)

{

 int len = strlen(str)-n;

 if(len>0)

   memmove(str+n, str+n+1, len);

 return str;

}

int main()

{  

   list <char*> words;

   int maxL = 0;

   char st[] = "fdfd hgf jhgf.jhgf,jytf juyhg1fhgft jhgf hgfhgfh hgfhgf";

   char razd[] = " ,.";

   for (char *p = strtok(st, razd); p != NULL; p = strtok(NULL, razd))

   {

     words.push_back(p);

     if(maxL < strlen(p))

       maxL = strlen(p);

   }

   

   for (char* n : words)

   {

       if(strlen(n) == maxL)

       {

           if(strlen(n)%2 == 0)

           {

               int delIndex = strlen(n)/2-1;

               for(int i=0; i<2; i++)

                   n = delItem(n,delIndex);

           }

           else

           {

               n=delItem(n,int(strlen(n)/2));

           }

       }

       cout<<n<<endl;

   }

   system("PAUSE");

}

Объяснение:


Программа нужна на C++, без использования string. Если получится написать код максимально кратко, бу
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика