![]() |
|
Модераторы: bsa |
![]()
|
|
| maxxi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 22.4.2007 Репутация: нет Всего: нет |
Пишу для лабы написать собственный класса String.
Нужно написать в нем методу convertStrToInt, то есть перевод String в integer. В одной методичке наткнулся на такой код непонятного содержания :
Обьясните ,пожайлуста, что выполняет выделенный в нем кусок. Спасибо Это сообщение отредактировал(а) maxxi - 5.11.2008, 00:35 |
|||
|
||||
| Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
в первой строке мы говорим, что будем двигаться от конца строки к началу, перебирая все символы. во второй строке мы смотрим, можно ли вообще преобразовывать в цифру симол, вдруг там буква. в третьей строке мы узнаем что за цифра, только замысловатым способом, дело в том, что символ "0" имеет код 48, "1" 49 и тд, так что допустим у нас символ p_str[i]= '0', тогда (int)p_str[i]=48, тогда а=48-48=0, вот мы и преобразовали символ в цифру, теперь надо ее поставить на свое место.
этот код делает следующее, нашу цифру умножает на 10 в степени temp_power, или другими словами ставит ее на свое место, те если у нас строка "123" тогда после первого прохода по циклу res=3 далее он возьмет 2, умножит на 10 в степени 1, затем увеличит res на эту величину и res=23, потом возьмет 1, умножит на 10 в степени 2 и увеличит res на 100, res=123 -------------------- |
||||
|
|||||
| maxxi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 22.4.2007 Репутация: нет Всего: нет |
Большое спасибо, все стало понятно
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
48 лучше оставить символом.
Это сообщение отредактировал(а) mes - 5.11.2008, 11:36 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Тут не хватает проверки на переполнение res, определения знака числа и возвращения кода ошибки. Удачи Это сообщение отредактировал(а) mes - 7.11.2008, 01:52 |
|||
|
||||
| Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
а я бы для понимания посоветовал вот так вот переводить символ в цифру (для начала):
что-то вроде этого. а в степень возводить вот так:
просто, как вариант. -------------------- |
||||
|
|||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
и вот опять магические цифры ... мне кажется в таком виде Ваш код, как минимум, будет меньше напрягать:
не правда ли ? Это сообщение отредактировал(а) mes - 5.11.2008, 17:29 |
||||
|
|||||
| kurtis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
А чем atoi() плох? Зачем пиать то что уже есть? Задача я так понял ставится конкретно в реализации самого класса Стринг, а не в реализации какого-то конкретного метода.
|
|||
|
||||
| maxxi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 22.4.2007 Репутация: нет Всего: нет |
atoi() cказали нельзя использовать....самим писать надо Это сообщение отредактировал(а) maxxi - 7.11.2008, 00:54 |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
странно. "123" превращается в 36 ;) так правильно:
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
sorry опечатка.. там умножить , так как сдвиг и есть умножение. сейчас исправлю.. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |