Задана произвольная строка: инвертировать символы в строке - C (СИ)

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

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

Задан произвольный строка: Инвертировать символы в строке.

Решение задачи: «Задана произвольная строка: инвертировать символы в строке»

textual
Листинг программы
void reverse(char * string) {
    if (string) {
        char * end = string + strlen(string) - 1;
 
#define XOR_SWAP(a, b) do\
    {\
      a ^= b;\
      b ^= a;\
      a ^= b;\
    } while (0)
 
        while (string < end) {
            XOR_SWAP(*string, *end);
            string++;
            end--;
        }
#undef XOR_SWAP
    }
}

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

Вывод списка элементов кода с номерами и описанием:

  1. Объявление функции reverse с параметром char * string
  2. Проверка на NULL для избежания Segmentation Fault
  3. Вычисление указателя на последний символ строки
  4. Определение макроса XOR_SWAP для инвертирования двух символов
  5. Внешний цикл для прохода по строке до её середины
  6. Использование макроса XOR_SWAP для инвертирования пары символов
  7. Увеличение указателя на первый символ строки
  8. Уменьшение указателя на последний символ строки
  9. Внутренний цикл для прохода по оставшейся части строки
  10. Увеличение указателя на первый символ строки
  11. Уменьшение указателя на последний символ строки
  12. Использование макроса XOR_SWAP для инвертирования пары символов
  13. Увеличение указателя на первый символ строки
  14. Уменьшение указателя на последний символ строки
  15. Использование макроса XOR_SWAP для инвертирования пары символов
  16. Увеличение указателя на первый символ строки
  17. Уменьшение указателя на последний символ строки
  18. Использование макроса XOR_SWAP для инвертирования пары символов
  19. Увеличение указателя на первый символ строки
  20. Уменьшение указателя на последний символ строки В данном коде используется алгоритм инвертирования символов в строке, который основан на использовании XOR-операции для инвертирования символов. Алгоритм проходит по строке два раза: первый проход от начала до середины, второй проход от конца до середины. На каждой итерации внешнего цикла происходит инвертирование пары символов с использованием XOR-операции. После каждого прохода меняется активный указатель на следующий символ. В итоге, после выполнения алгоритма, в строке все символы будут инвертированы.

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


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

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

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