Преобразуйте строку так, чтобы сначала в ней шли все буквы исходной строки - 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, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д