Форум программистов, компьютерный форум, киберфорум
Ales'hon'ne
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Как прочитать множество из строки

Запись от Ales'hon'ne размещена 25.05.2013 в 11:20
Показов 2641 Комментарии 0

Собственно, вопрос: есть строка, определяющая множество чисел как в паскале. Нужно эту строку разобрать. Готовых решений не нашёл (может, плохо искал), и пришлось писать велосипед.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
type
  ByteSet=set of Byte;
 
function StringToSet(v: AnsiString): ByteSet;
type
  TToken=(ttNomber, ttPause, ttDiapasone, ttEnd, ttOther, ttError);
var
  i: Integer;
  lastNomber: byte;
 
  procedure SpaceDil;
  begin
    while (v[i] in [',', ' ', '.']) do
      inc(i)
  end;
 
  function NextToken: TToken;
  begin
    Result:=ttOther;
    if i>Length(v) then
      exit(ttEnd);
    try
      case v[i] of
        '0'..'9': Result:=ttNomber;
        ',', ' ': Result:=ttPause;
        '.': if v[i+1]='.' then Result:=ttDiapasone
      end;
      SpaceDil
    except
      Result:=ttError
    end
  end;
 
  function ReadNomber: Byte;
  const
    Null=ord('0');
  begin
    Result:=0;
    while (i<=Length(v)) and (v[i] in ['0'..'9']) do
      begin
        Result:=Result*10+(ord(v[i])-Null);
        inc(i)
      end
  end;
 
begin
  Result:=[];
  i:=1;
  while true do
    case NextToken of
      ttNomber: begin lastNomber:=ReadNomber; include(Result, lastNomber) end;
      ttDiapasone: Result:=Result+[lastNomber+1..ReadNomber];
      ttEnd: exit;
      ttOther,ttError: raise Exception.Create('Not valid input set: '+v);
      ttPause:
    end
end;
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru