Задача с обменом символов в строке - 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; }
Объяснение кода листинга программы
Этот код реализует алгоритм обмена символов в строке. Вот список действий, которые он выполняет:
- Ввод строки с помощью функции scanf.
- Инициализация указателя на первый символ строки.
- Начинается цикл, который проходит по каждому символу строки до конца строки.
- Проверка условия: если текущий символ является первым символом строки или следующий символ больше текущего, то происходит обмен символов.
- Если условие не выполняется, то происходит обмен симворов между текущим и предыдущим символами.
- После выполнения обмена символов указатель на текущий символ увеличивается на 1.
- Если текущий символ является последним символом строки, то указатель на него уменьшается на 1.
- Цикл продолжается до тех пор, пока не будет достигнут конец строки.
- Вывод строки с помощью функции puts.
- Указатель на последний символ строки уменьшается на 1.
- Начинается цикл, который проходит по каждому символу строки от начала до конца, меняя местами текущий и следующий символы.
- Вывод строки с помощью функции puts.
- Возврат 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д