Задача с обменом символов в строке - C (СИ)

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

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

Дана строка размером от 5 до 80 символов. Необходимо в соответствии с вариантом написать программу, которая реализует обработку строки. Использовать стандартные функции и операции индексации запрещено. Длина строки нечетная. Отсортировать строку по убыванию. Вывести результат на экран. После этого обменять местами символы попарно равноудалены от центрального символа и вывести новую строку на экран. Пример: входная строка - ghabtefcd, выходные строки - thgfedcba, abcdefght. Непонятно как сделать что бы принимал только НЕЧЕТНОЕ количество символов, а так же как обменять их потом местами. Отсортировать сам думаю смогу. Помогите кто может)

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

textual
Листинг программы
#include <stdio.h>
 
int main(void)
{
    char str[81];
    scanf("%80s", str);
    char* pch = str;
    while (*pch != '\0')
    {
        if (pch == str || *(pch - 1) >= *pch)
        {
            pch++;
        }
        else
        {
            char t = *pch;
            *pch = *(pch - 1);
            *(pch - 1) = t;
            pch--;
        }
    }
    puts(str);
    pch--;
    for (char* i = str; i < pch; i++, pch--)
    {
        char t = *i;
        *i = *pch;
        *pch = t;
    }
    puts(str);
    return 0;
}

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

Этот код реализует алгоритм обмена символов в строке. Вот список действий, которые он выполняет:

  1. Ввод строки с помощью функции scanf.
  2. Инициализация указателя на первый символ строки.
  3. Начинается цикл, который проходит по каждому символу строки до конца строки.
  4. Проверка условия: если текущий символ является первым символом строки или следующий символ больше текущего, то происходит обмен символов.
  5. Если условие не выполняется, то происходит обмен симворов между текущим и предыдущим символами.
  6. После выполнения обмена символов указатель на текущий символ увеличивается на 1.
  7. Если текущий символ является последним символом строки, то указатель на него уменьшается на 1.
  8. Цикл продолжается до тех пор, пока не будет достигнут конец строки.
  9. Вывод строки с помощью функции puts.
  10. Указатель на последний символ строки уменьшается на 1.
  11. Начинается цикл, который проходит по каждому символу строки от начала до конца, меняя местами текущий и следующий символы.
  12. Вывод строки с помощью функции puts.
  13. Возврат 0, что означает успешное выполнение программы.

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


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

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

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