С клавиатуры вводится строка. Проверьте, может ли эта строка быть записью числа в...

0 голосов
55 просмотров

С клавиатуры вводится строка. Проверьте, может ли эта строка быть записью числа в десятичной системе счисления. Учтите, что число может быть не обязательно целым.


Информатика (520 баллов) | 55 просмотров
0

Если учесть, что число может иметь знак, быть в формате с фиксированной точкой или в виде мантиссы и порядка (например, -23.564E+16), то задача становится далеко не такой простой, как внешне кажется.

0

Надо провести анализ строки на соответствие вот такому синтаксису: [+|-] <целое_без_знака> [.<целое_без_знака> [E|e [+|-] <целое_без_знака>]

0

Проще всего это делать на основе регулярных выражений. Но это уже не школьная тема...

Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.NET 3.1, сборка 1213 от 04.04.2016
begin
  var s:=ReadlnString('>');
  var x:=RegEx.Match(s,'([+-]?\d+\.?\d*([Ee][+-]?\d+)?)').ToString;
  if x.Length=0 then Writeln('Недопустимая запись числа')
  else
    if s=x then Writeln('Допустимая запись числа')
    else Writeln('Частично допустимая запись: ',x)
end.

Тестовые примеры
> .3464
Частично допустимая запись: 3464

> -345.534634E-12
Допустимая запись числа

> +34525352552
Допустимая запись числа

> +066464.33435e+34.4325
Частично допустимая запись: +066464.33435e+34

> 45434534,363
Частично допустимая запись: 45434534

> e342
Частично допустимая запись: 342

> ТутСпрятаноЧисло345.54МыЕгоНайдем!
Частично допустимая запись: 345.54

> А тут числа нет
Недопустимая запись числа

(142k баллов)
0

Спасибо большое

0

Пожалуйста. Но вообще "спасибо" тут принято выражать кнопочкой, той, что чуть выше комментариев.