пятница, 19 февраля 2016 г.

C. Выделить отдельные слова и записать их в обратном порядке. Вывести преобразованную строку на экран.


#include <stdio.h>
#include <ctype.h>
 
//-----------------------------------------------------------------------------
void Swap(char* a, char* b)
{
   char tmp = *a;
   *a = *b;
   *b = tmp;
}
//-----------------------------------------------------------------------------
void Reverse(char* begin, char* end)
{
   while (begin < end)
   {
      Swap(begin++, end--);
   }
}
//-----------------------------------------------------------------------------
void ReverseAllWords(char* text)
{
   char* begin;
 
   while (*text)
   {
      for (; *text && isspace(*text); ++text) { ; }
      begin = text;
 
      for (; *text && !isspace(*text); ++text) { ; }
 
      if (begin < text)
      {
         Reverse(begin, text - 1);
      }
   }
}
//-----------------------------------------------------------------------------
 
int main()
{
   char text[256] = {'\0'};
 
   printf("input text: ");
   fgets(text, sizeof(text) - 1, stdin);
 
   ReverseAllWords(text);
 
   printf("result: %s", text);
 
   return 0;
}

Комментариев нет:

Отправить комментарий