|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
|||||||||||
ф-ция реверса строки14.05.2013, 10:51. Показов 11014. Ответов 110
Метки нет (Все метки)
был вчера на собеседовании, попросили написать ф-цию реверса строки (поменять местами 1й и последний символы, 2й и предпоследний и т.д.), но ф-ция должна принимать параметром указатель на char т.е. на начало строки и все. я там немного тупанул но написал, вот хочу узнать есть ли решение получше моего.
вот код (писал в Embarcadero RAD Studio (Borland)):
0
|
|||||||||||
| 14.05.2013, 10:51 | |
|
Ответы с готовыми решениями:
110
Функция реверса строки
Какая ф-ция в VC++ определяет длину строки??? |
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
||
| 14.05.2013, 16:38 [ТС] | ||
|
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||
| 14.05.2013, 16:55 | |||||||
0
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 14.05.2013, 16:57 | |
|
Tulosba, Я бы сказал, что это UB, а будет-ли это ошибкой выполнения (или форматированием жесткого диска) зависит от реализации
0
|
|
| 14.05.2013, 17:09 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.05.2013, 17:19 | |
|
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||
| 14.05.2013, 17:25 | |||
|
taras atavin,
0
|
|||
|
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 6
|
|
| 14.05.2013, 17:25 | |
|
не могу исправит ошибку в вижел студии что надо для этого сделать
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 14.05.2013, 17:35 | ||
|
Добавлено через 2 минуты
0
|
||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 15.05.2013, 02:00 | ||
|
по стандарту правильный результат сравнения указателей гарантируется только для адресов элементов одного массива
0
|
||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||
| 15.05.2013, 09:10 | ||
|
0
|
||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
|||||||
| 15.05.2013, 09:56 [ТС] | |||||||
|
в общем получился следующий код:
0
|
|||||||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||||||||||||
| 15.05.2013, 10:14 | ||||||||||||
?еще раз хотелось бы отметить что
кроме того можно выкинуть условия проверки пустой строки если пользоваться инкрементом после указателя.
1
|
||||||||||||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
||||||
| 15.05.2013, 10:38 [ТС] | ||||||
|
vxg, полностью с Вами согласен, это не очень хороший стиль программирования. А сделать чтобы ф-ция возвращала булево значение я решил следуя из тех соображений, что таким образом ф-ция может еще и проверить пустая ли строка и указывает ли указатель на строку вообще, хотя это сокрее всего тоже не есть хорошо, так как работа этой ф-ции лишь изменить строку в соответствии с требованиями.
0
|
||||||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||
| 15.05.2013, 10:46 | ||
|
Добавлено через 1 минуту ...кроме того теперь в этом нет нужды - раньше вы были вынуждены так делать потому что после подсчета строки получали end_str указывающий на символ после конца строки. теперь в цикле перестановки вы просто можете делать декремент в теле
0
|
||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
|||
| 15.05.2013, 11:05 [ТС] | |||
|
vxg, а вот теперь Вы неправы
while(символ) символ? да указатель ++ (сдвинулись и сейчас end_str указывает на '\0') символ? нет break Добавлено через 2 минуты хотя посмотрев в дебагере все еще лучше. В случае пустой строки по указателю находится сразу символ окончания строки, так что оба цикла пропускаются, т.к. условия входа в них не выполняются Добавлено через 4 минуты мб я не очень хорошо умею излагать свои мысли, за это уж простите))
0
|
|||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|||
| 15.05.2013, 11:15 | |||
|
0
|
|||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
||||||
| 15.05.2013, 11:48 [ТС] | ||||||
|
я понял что Вы имели в виду. сначала выполняется "while (*end_str) ++end_str;" т.е. указатель продвигается по массиву до тех пор пока не достигнет терминального нуля, а лишь потом выполняется операция декремента указателя "while (--end_str > str)", т.е. в этом цикле указатели "двигаются" в пределах массива навстречу друг другу (а в пределах массива сравнение указателей по стандарту гарантировано, на сколько я знаю). так что все в порядке
Добавлено через 21 минуту Tulosba, по ссылке в принципе то же самое, но, конечно, с битовыми операциями сильно)) минус переменная. правда все-таки в варианте, который здесь написан, по моему мнению, если сделать переброску символов не через переменную, а битовыми операциями, лучше Добавлено через 3 минуты получается что-то вроде следующего:
0
|
||||||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||||||||||||
| 15.05.2013, 11:54 | ||||||||||||
иначе
0
|
||||||||||||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
|
| 15.05.2013, 11:59 [ТС] | |
|
vxg, запусти у себя эту ф-цию и попробуй сломать, посмотри через дебаг. лично я никаких траблов не смог найти
а проверка указателя нужна на тот случай если кто-нибудь додумается передать в ф-цию нулевой указатель, а все строки в С стиле заканчиваются терминальным нулем, так что передача нулевого указателя в ф-цию это самое опасное что может произойти, по идее))
0
|
|
| 15.05.2013, 11:59 | |
|
Защита от реверса ( md5 ) Реализация реверса массива Защита от реверса проекта Ошибка в создании реверса массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|