|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
|||||||||||
ф-ция реверса строки14.05.2013, 10:51. Показов 11011. Ответов 110
Метки нет (Все метки)
был вчера на собеседовании, попросили написать ф-цию реверса строки (поменять местами 1й и последний символы, 2й и предпоследний и т.д.), но ф-ция должна принимать параметром указатель на char т.е. на начало строки и все. я там немного тупанул но написал, вот хочу узнать есть ли решение получше моего.
вот код (писал в Embarcadero RAD Studio (Borland)):
0
|
|||||||||||
| 14.05.2013, 10:51 | |
|
Ответы с готовыми решениями:
110
Функция реверса строки
Какая ф-ция в VC++ определяет длину строки??? |
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||
| 15.05.2013, 13:34 | ||
|
-по адресу на который смотрит указатель лежит ноль (терминатор, строка пустая) -мы пытаемся вычислить длину - цикл подсчета не запускается ни разу потому как мы сразу видим что по адресу на который смотрит end_str лежит ноль - end_str остается указывающим на начало строки -мы входим в условие цикла перестановки и делаем декремент перед сравнением -end_str понижается ниже сегмента и система присваивает ему значение соответствующее верху сегмента -условие выполняется end_str > str и мы входим в цикл -мы переставляем ВСЕ содержимое сегмента до тех пор пока не дойдем до второго от начала строки символа - в этом случае условие --end_str > str не выполнится так как обратиться в равенство и мы выйдем из цикла (если машина к тому времени будет жива)
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 15.05.2013, 13:36 | |
|
vxg, Все, что между " " является строковым литералом. Его тип (говорим сейчас об обычных символах и без конкатенации строк) является const char[n], где n - кол-во символов + '\0' ("qwerty" имеет тип const char[7]), расположенном в статической памяти программы (литерал существует все время работы программы). Если мы присваиваем его адрес к char* - мы имеем полное право менять символы, на которые указывает данный char*, однако если мы попытаемся изменить строковый литерал (НАСТОЯЩУЮ константу) - мы получим UB. Если мы сразу присвоим к const char*, при попытке изменения нас пошлет компилятор и мы не будем ловить клевые ошибки, если мы сразу присвоим к массиву (сделаем КОПИЮ строкового литерала) - мы можем его менять как хотим.
0
|
|
|
|
|
| 15.05.2013, 13:36 | |
|
вот так работает
![]() C++ #include <iostream> #include <cstdio> #include <string> using namespace std ; int main () { string str ("text" ) ; string buf = str ; int len = str. size () ; for (int i = 0 ; i < len ; i ++ ) { str [ i ] = buf [ len - 1 - i ] ; } cout << str << endl ; }
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 15.05.2013, 13:39 | |
|
programina, Конечно, ведь при создании строки происходит копия char* переданного в конструктор.
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 15.05.2013, 13:39 | |
|
0
|
|
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|
| 15.05.2013, 13:39 | |
|
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 15.05.2013, 13:41 | |
|
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||
| 15.05.2013, 13:41 | ||
|
vxg, impl-defined.
0
|
||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|||||||
| 15.05.2013, 13:48 | |||||||
0
|
|||||||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
||
| 15.05.2013, 13:48 [ТС] | ||
|
0
|
||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
||||||||||||
| 15.05.2013, 13:55 | ||||||||||||
|
о... нашел. скрипт проекта для WinCC
Добавлено через 4 минуты
0
|
||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 15.05.2013, 14:02 | |
|
vxg, Самый что ни на есть UB в С++. Он даже не потенциальный.
1
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 15.05.2013, 14:05 | ||
|
0
|
||
|
Модератор
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
|
|||
| 15.05.2013, 14:06 | |||
|
0
|
|||
|
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
|
||
| 15.05.2013, 14:14 [ТС] | ||
|
Добавлено через 6 минут хотя она опасная лишь в том случае, если после сдвига указателя на конец строки он по памяти перейдет за указатель на начало строки
0
|
||
|
|
|
| 16.05.2013, 19:02 | |
|
ВООООООООООООТ ))))))))))))))))
C++ #include <iostream> #include <string.h> using namespace std; char *reverse(char *s) { int l = strlen(s); char b[l]; for(int i=0; i < l; i++) b[i] = s[i]; for(int i=0; i < l; i++) s[i] = b[l-1-i]; return s; } int main() { char s[] = "abcdefghijklmnopqrstuvwxyz"; cout << reverse(s) << endl; }
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 16.05.2013, 19:24 | |
|
programina, не эффективно. И variable length array требуется.
0
|
|
|
Кактус
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
|
|
| 16.05.2013, 19:41 | |
|
10 страниц комментариев вокруг обычно реверса )) Я конечно еще кибер-титьку посасываю, но это по моему просто катастрофа )) Тут решений кушай не хочу, можно даже свой стринг написать таким образом, что сложность реверса будет O(1), а отличаться от обычного он будет разве, что названием и архитектурой, можно темплейт привязать, тогда крути-верти, что хочешь и так далее.
0
|
|
|
|
||
| 16.05.2013, 19:42 | ||
0
|
||
| 16.05.2013, 19:42 | |
|
Защита от реверса ( 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-модели) микоризной сукцессии: пять. . .
|