![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Foxxx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.8.2007 Репутация: нет Всего: нет |
Необходимо написать функцию, которая принимает строку с (нулевым байтом), производит в ней поиск наибольшего количества цифр, стоящих подряд. Ф-я возвращает строку из найденных цифр.
Пример. Есть строка: "qwerty2qwerty 22 2 q 2 1qeqe323eq2". Функция возвратит 323. |
|||
|
||||
| Walker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 1 Всего: 16 |
Доброго времени суток. Например, так?
Плюсы: алгоритм однопроходный. Минусы: требует выделение памяти под строку для временного сохранения перед анализом каждой встреченной числовой последовательности Возможная оптимизация предложенного алгоритма: выделять для временного хранения числовой последовательности память динамически с помошью p = alloc(n) и free(p), где p - указатель на место в памяти для хранения n типов. -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
| Foxxx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.8.2007 Репутация: нет Всего: нет |
А можно без указателей как-нить. Просто в функцию передается массив символов. И не надо дополнительных фичей типа возвращения длины строки. Необходимо получить строку, найти данные, и вернуть строку.
Добавлено через 32 секунды Может кто-нить еще что-нить подкинет |
|||
|
||||
| Walker |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 1 Всего: 16 |
Уважаемый Foxxx, любой преподаватель будет счастлив, если его ученик обретёт системное мышление, применительно к инженеру (не только ПО), будет видеть задачу, стоящую перед ним, с комплексной точки зрения и мыслить категориями принципиальных схем и алгоритмов в первую очередь. Вы же сразу обратили внимание на детали реализации. Функция выполняет должна выполнять поставленные Вами изначально условия. Если она по каким-то причинам этого не делает - необходимо сперва разобраться, почему и устранить недостаток. Если же она со своей задачей справляется - оформляйте, как душе угодно. Ну не нравится Вам, что она возвращает длину, а собираемая строка передаётся через параметр, так возьмите и объявите её внутри функции, а возращаемое значение объявите char[] - дело-то вкуса. Вот мне было жалко просто так терять maxlen, тем более, что в С возращаемый по умолчанию тип - int.
на
компилятор сделает остальное, а в происходящих фактически процессах работы с памятью ничего не изменится! Удачи! Это сообщение отредактировал(а) Walker - 20.11.2007, 12:58 -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
||||||||
|
|||||||||
| Foxxx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.8.2007 Репутация: нет Всего: нет |
Спасибо. Но хотелось бы еще примеров от других пользователей, простите, программистов
|
|||
|
||||
| Walker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 1 Всего: 16 |
Другое дело!
Я тоже за "мозговой штурм"! -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
| Optimus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 1.9.2007 Репутация: 9 Всего: 14 |
Добавлено через 5 минут и 17 секунд P.S. в случае если есть несколько строк с наибольшем количества цифр, функция вернет только первую строку --------------------
"постановка задачи наполовину решает саму задачу" |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Foxxx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.8.2007 Репутация: нет Всего: нет |
А если немножко изменить задание:
Функция ничего не принимает и не возвращает (void). Есть глобальные переменная - char data[256] - исходная строка. char maxnumbers[256] - строка результата. Необходимо со строкой data проделать тоже самое и скопировать результат в numbers. У меня что то не получается
|
|||
|
||||
| Optimus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 1.9.2007 Репутация: 9 Всего: 14 |
а если немножко подумать
--------------------
"постановка задачи наполовину решает саму задачу" |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |