On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 07.06.18 15:50. Заголовок: Перестановка цифр в числах, встречающихся в строке.


Еще один вопрос для начинающих программистов,
How I can reverse numbers in a string without reversing any text in C?, заданный на Stackoverflow.

Требуется переставить цифры чисел, которые встречаются в строке, не затрагивая другие символы строки.

Так как автор исходного вопроса на Stackoverflow не представил результаты своих попыток выполнить задачу, то есть не показал, что он успел сделать, и что у него не получается на текущий момент, то его вопрос был закрыт как слишком общий вопрос.

Очевидно, что требуется сначала написать общую функцию reverse, которая переставляет любые символы в строке в заданном диапазоне. Имея такую функцию, можно легко написать основную функцию, выполняющую заданную задачу, которая будет находить начало и конец последовательностей цифр в строке и передавать найденные диапазоны в функцию reverse.

Ниже представлена демонстрационная программа, в которой приведены реализации описанных двух функций, которые выполняют поставленную задачу.

 
#include <stdio.h>
#include <ctype.h>

void reverse( char *first, char *last )
{
if ( first != last )
{
for ( ; first < --last; ++first )
{
char c = *first;
*first = *last;
*last = c;
}
}
}

char * reverse_numbers( char *s )
{
for ( char *first = s; *first; )
{
while ( !isdigit( ( unsigned char )*first ) ) ++first;

if ( *first )
{
char *last = first;
while ( isdigit( ( unsigned char )*last ) ) ++last;
reverse( first, last );
first = last;
}
}

return s;
}

int main( void )
{
char word[] = "Hello123456World.";

puts( word );
puts( reverse_numbers( word ) );
}


Вывод программы на консоль

 
Hello123456World.
Hello654321World.


Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет