В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово - C (СИ) (72709)

Узнай цену своей работы

Формулировка задачи:

В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово.
Входные данные: abcde fghik lmnop Выходные данные: edcba kihgf ponml
есть код это прги на паскале, если надо могу скинуть можно сделать в java но тогда с объяснением(не знаю java)

Решение задачи: «В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. void swap(char* a, char* b) {
  5.     char t = *a;
  6.     *a = *b;
  7.     *b = t;
  8. }
  9.  
  10. void reverse(char* begin, char* end) {
  11.     while (begin < end) {
  12.         swap(begin++, end--);
  13.     }
  14. }
  15.  
  16. int getWord(char* str, char** begin, char** end) {
  17.     for (; *str && !isalpha(*str); ++str) { ; }
  18.     *begin = str;
  19.  
  20.     for (; *str && isalpha(*str); ++str) { ; }
  21.     *end = str;
  22.  
  23.     return *end - *begin;
  24. }
  25.  
  26. char* reverseWords(char* str) {
  27.     char* p = str;
  28.     char* begin, * end;
  29.  
  30.     while (getWord(p, &begin, &end) > 0) {
  31.         reverse(begin, end - 1);
  32.         p = end;
  33.     }
  34.  
  35.     return str;
  36. }
  37.  
  38. int main() {
  39.     char text[] = "abcde fghik lmnop";
  40.  
  41.     printf("%s\n", reverseWords(text));
  42.  
  43.     return 0;
  44. }

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

  1. Включаются необходимые заголовочные файлы
  2. Определяются две функции: swap и reverse, которые меняют местами два указателя на символы и переворачивают строку соответственно
  3. В функции getWord ищется граница слова в строке, в которую заводятся два указателя: begin на первый символ слова и end на последний символ слова
  4. В функции reverseWords ищется начало и конец каждого слова в строке, затем вызывается функция reverse для переворота каждого слова
  5. В функции main создаётся тестовая строка и вызывается функция reverseWords, которая переворачивает слова в строке и выводит результат
  6. Возвращаемое значение функции reverseWords не используется

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


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

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

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы