Преобразуйте строку так, чтобы сначала в ней шли все буквы исходной строки - C (СИ)
Формулировка задачи:
Имеется строка, содержащая буквы и цифры. Преобразуйте эту строку чтобы сначала в ней шли все буквы исходной строки, а потом - все цифры исходной строки, но в обратном порядке.
Допустимые символы - цифры; прописные и строчные латинские буквы.
Примеры:
Исходная строка Результат
ad2e57b6 adeb6752
Стрижем.Kozloff. Недопустимый символ - "."
Решение задачи: «Преобразуйте строку так, чтобы сначала в ней шли все буквы исходной строки»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> /* Имеется строка, содержащая буквы и цифры. Преобразуйте эту строку чтобы сначала в ней шли все буквы исходной строки, а потом - все цифры исходной строки, но в обратном порядке. Допустимые символы - цифры; прописные и строчные латинские буквы. */ char * order_string(char * s) { char * head = s, * tail = s + strlen(s) - 1; while ( head < tail ) { if ( ! isdigit(*head) ) ++head; else { char tmp = *head; memmove(head, head + 1, tail - head); *tail-- = tmp; } } return s; } int main(void) { char str[256]; while ( printf("String: ") && scanf("%255[0-9A-Za-z]%*c", str) == 1 ) printf("Result: %s\n", order_string(str)); return 0; }
Объяснение кода листинга программы
- В функции
order_string
первым шагом являются инициализация двух указателей:head
указывает на первый символ в строкеs
, аtail
указывает на последний символ в строкеs
. - Затем в цикле
while
происходит сравнение каждого символа в строкеs
. Если символ является буквой, тоhead
увеличивается на 1. Если символ является цифрой, то он копируется в конец строки, аhead
увеличивается на 1. Это продолжается до тех пор, покаhead
меньшеtail
. - В конце функции
order_string
возвращается исходная строкаs
. - В функции
main
объявлен массивstr
для хранения строки, введенной пользователем. - Затем в цикле
while
пользователю предлагается ввести строку. Если строка успешно введена, то она передается в функциюorder_string
, а затем выводится на экран. - В конце программы возвращается 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д