LCME Воскресенье, 28.05.2017, 03:54
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: anatoliy 
Форум » Домашние задания » Программирование » Домашнее задание от 26.11 (Анатоле) (Покрыть весь int: многозначные числа, унарный минус)
Домашнее задание от 26.11 (Анатоле)
anatoliyДата: Воскресенье, 29.11.2009, 16:15 | Сообщение # 1
Captain BWAAAAAH!!!
Группа: Модераторы
Сообщений: 32
Репутация: 1
Статус: Offline
мой вариант (никто кроме меня в коде не разберется happy )
Прикрепления: tree4.ml(2Kb)
 
freidomДата: Воскресенье, 29.11.2009, 18:20 | Сообщение # 2
Главный тут
Группа: Администраторы
Сообщений: 273
Репутация: 20
Статус: Offline
Есть очень простой способ считывать числа, намного проще чем твой.
Code
let parse_num i sign =
   let rec pn acc pos =
    if (pos < len) then
     match s.[pos] with
       x when is_num x -> pn (10 * acc + (int_of_ascii x)) (pos + 1)
      |_ -> (Pnum (if sign then acc else -acc), pos)
    else    (Pnum (if sign then acc else -acc), pos) in pn 0 i;;

Здесь i - позиция, где начинается число, а sign - булёвское значение, указывающее на его знак. Обрати особое внимание на match - там всё самое интересное и происходит.
 
Форум » Домашние задания » Программирование » Домашнее задание от 26.11 (Анатоле) (Покрыть весь int: многозначные числа, унарный минус)
Страница 1 из 11
Поиск:

Copyright Freidom © 2017 Хостинг от uCoz