Преобразуйте строку так, чтобы сначала в ней шли все буквы исходной строки - C (СИ)

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

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

Имеется строка, содержащая буквы и цифры. Преобразуйте эту строку чтобы сначала в ней шли все буквы исходной строки, а потом - все цифры исходной строки, но в обратном порядке. Допустимые символы - цифры; прописные и строчные латинские буквы. Примеры: Исходная строка Результат ad2e57b6 adeb6752 Стрижем.Kozloff. Недопустимый символ - "."

Решение задачи: «Преобразуйте строку так, чтобы сначала в ней шли все буквы исходной строки»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. /*
  6. Имеется строка, содержащая буквы и цифры. Преобразуйте эту строку
  7. чтобы сначала в ней шли все буквы исходной строки, а потом - все цифры
  8. исходной строки, но в обратном порядке.
  9. Допустимые символы - цифры; прописные и строчные латинские буквы.
  10. */
  11.  
  12. char * order_string(char * s) {
  13.     char * head = s, * tail = s + strlen(s) - 1;
  14.    
  15.     while ( head < tail ) {
  16.         if ( ! isdigit(*head) )
  17.             ++head;
  18.         else {
  19.             char tmp = *head;
  20.             memmove(head, head + 1, tail - head);
  21.             *tail-- = tmp;
  22.         }
  23.     }
  24.    
  25.     return s;
  26. }
  27.  
  28. int main(void) {
  29.     char str[256];
  30.    
  31.     while ( printf("String: ") && scanf("%255[0-9A-Za-z]%*c", str) == 1 )
  32.         printf("Result: %s\n", order_string(str));
  33.    
  34.     return 0;
  35. }

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

  1. В функции order_string первым шагом являются инициализация двух указателей: head указывает на первый символ в строке s, а tail указывает на последний символ в строке s.
  2. Затем в цикле while происходит сравнение каждого символа в строке s. Если символ является буквой, то head увеличивается на 1. Если символ является цифрой, то он копируется в конец строки, а head увеличивается на 1. Это продолжается до тех пор, пока head меньше tail.
  3. В конце функции order_string возвращается исходная строка s.
  4. В функции main объявлен массив str для хранения строки, введенной пользователем.
  5. Затем в цикле while пользователю предлагается ввести строку. Если строка успешно введена, то она передается в функцию order_string, а затем выводится на экран.
  6. В конце программы возвращается 0, что означает успешное завершение программы.

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы