Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
5 / 5 / 7
Регистрация: 02.03.2016
Сообщений: 46
1

Правильная запись

05.01.2017, 17:11. Показов 699. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите где может быть ошибка.

Задача такая. Дано число. Если оно вещественное и правильно записано, то вывести 'LEGAL', иначе вывести 'ILLEGAL'. Я написал свою программу, но она не проходит. Завалить самому пока что не получилось. Подскажите тест, на котором она может упасть. Или ошибку в алгоритме, пожалуйста.

Примеры.

Вход

1.5e+2

Выход

LEGAL

Вход

3.

Выход

ILLEGAL


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
var
  s:string;
  kt,k,i,num:integer;
begin
  kt := 0;
  readln(s);
  if(s[1]='+')or(s[1]='+')then num := 2
    else num := 1;
  k := pos(' ',s);
  while(k>0)do begin
    delete(s,k,1);
    k := pos(' ',s);
  end;
  for i := num to length(s)do begin
    if(s[i]='.')then inc(kt);
    if not((s[i]='+')or(s[i]='-')or(s[i]in['0'..'9'])or(s[i]='e')or(s[i]='.'))then begin
      writeln('ILLEGAL');
      exit;
    end;
    if(s[i]='.')then if not((s[i-1] in['0'..'9'])and(s[i+1] in['0'..'9']))then begin
      writeln('ILLEGAL');
      exit;
    end;
    if(s[i]='e')then begin
      if not((((s[i-1]='.')and(s[i-2]in ['0'..'9']))or(s[i-1]in['0'..'9']))and((s[i+1]='-')or(s[i+1]='+')))then begin
        writeln('ILLEGAL');
        readln;
        exit;
      end;
    end;
  end;
  if(kt>0)then writeln('LEGAL')
    else writeln('ILLEGAL');
  readln;
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2017, 17:11
Ответы с готовыми решениями:

Заменить for на while программа правильная
Помогите заменить for на while программа правильная 1. uses crt; var q,s:integer; begin...

правильная запись целого числа.
Условие такое - Определить, является ли заданный текст правильной записью целого числа (возможно,...

Правильная запись формулы
Как правильно записать вот эту формулу в Delphi: Я про бывал вот так:...

Правильная запись в XMLfile
Всем привет есть два класса. Один наследуется от другого. Как правильно выполнить добавление...

4
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
05.01.2017, 17:45 2
1) В строке 7 один из плюсов должен был быть минусом. Можно упростить условие до "s[1] in ['+','-']".
2) Зачем бездумно удалять пробелы? Неправильную запись '1 2' посчитаете правильной '12'.
3) Как то все слишком сложно, почитайте, скажем, про конечные автоматы (или регулярные выражения, если останется интерес).
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.01.2017, 17:47 3
Цитата Сообщение от Chost Посмотреть сообщение
Дано число. Если оно вещественное и правильно записано, то вывести 'LEGAL', иначе вывести 'ILLEGAL'.
Вообще-то это делается так.
Pascal
1
2
3
4
5
6
var s,x:real;
     k:integer;
begin
readln(s);
val(s,x,k);
if k=0 then write('LEGAL') else write('ILLEGAL');
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
05.01.2017, 18:16 4
Puporev, во-первых,

Pascal
1
2
s:string; // <--
x:real;
, а во-вторых, этот способ засчитает запись 3. за легальную, а у ТС-а она заявлена как нелегальная

Не по теме:

Блин, да что с форумом-то? Время обновления страницы больше минуты - это уже даже не смешно...

0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.01.2017, 18:30 5
Цитата Сообщение от volvo Посмотреть сообщение
Блин, да что с форумом-то
https://www.cyberforum.ru/post9973504.html
0
05.01.2017, 18:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2017, 18:30
Помогаю со студенческими работами здесь

Правильная запись в StringBuilder
Добрый день, подскажите, как правильно и красиво переделать следующие строки кода: ...

Правильная запись на языке Delphi
Доброго времени суток, нужна помощь в состовлении правильного алгоритма. Нужно записать подсчет...

Правильная запись условного оператора
Добрый день. Подскажите, пожалуйста, как правильно записать эту формулу в Excel: если Е18=0 и...

Указатель на структуру, правильная ли запись?
Решаю упражнения на некотором сайте и вот задачка, на которой я &quot;завис&quot; Условие: Вот пример...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru