Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2007, 16:01   #1
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию Определить, является ли заданная строка правильной записью вещественного числа

Определить, является ли заданная строка правильной записью вещественного числа (возможно, со знаком, а также с пробелами спереди и/или сзади) .
Указание: вещественное число может быть представлено либо в виде числа с фиксированной десятичной точкой (-214.78), либо в виде числа с плавающей точкой десятичной точкой(-2.1478E+02).


Просто мне кажется что это все можно сделать намного проще, а я тут сейчас нафигарю с три короба))))))
Вот это я пытался что-то родить и мой потенциал на этом закончился:



Код:
 
var s:string;
l: set of '0'..'9';
q,i:integer;
c:char;
w:real;
begin
i:=1;
l:=['0'..'9'];
writeln('Vvedite stroku');
readln(s);
{попробуем получить одно слово}
while pos(' ',s)<>0 do delete (s,pos(' ',s),1); {удалим все пробелы если они есть}
If s[i]='+' then delete (s,pos('+',s),1); {удалим знак + если он стоит впереди числа}
If s[i]='-' then q:=-1; {присвоим переменной знак - если он есть}
{прошерстим слово и индифицируем в нем все цифры и буквы}
For i:=1 to length(s) do begin
If (s[i] in l) then writeln('sama dura'); {Ищем цифры от 0...9}
If (s[i] in ['E']) then writeln('sam durak'); {Ищем знак Е}
writeln('stroka',s);
end;
readln(s);
 
end.

Последний раз редактировалось Alex21; 24.10.2007 в 09:56. Причина: ИСПОЛЬЗУЕМ ТЕГИ КОДА
Sergik1977 вне форума Ответить с цитированием
Старый 18.10.2007, 16:07   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

а Val(s,w,code) не пробовал, преобразует строку в число, пробелы, насколько помню не мешают преобразованию. Если code=0, то число получено.
Здесь s - строка, w - переменная, может быть real или integer, смотря что ожидаешь получить.

Последний раз редактировалось _Dmitry; 18.10.2007 в 16:11.
_Dmitry вне форума Ответить с цитированием
Старый 18.10.2007, 16:53   #3
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию

Дмитрий премного благодарен, я так и знал что ларчик просто открывался. На пробелы впереди не реагирует а позади уже не видит цифру. Поэтому оставил уничтожение пробелов.


Получилось:


Код:
 
var s:string;
code:integer;
w:real;
begin
writeln('Vvedite stroku');
readln(s);
{попробуем получить одно слово}
while pos(' ',s)<>0 do delete (s,pos(' ',s),1); {удалим все пробелы если они есть}
Val(s,w,code); {Если code=0, то число получено}
If code =0 then writeln('TRUE: ',s) else writeln('FALSE: ',s);
writeln('stroka');
readln(s);
end.

Последний раз редактировалось Alex21; 24.10.2007 в 09:57. Причина: [CODE] [/CODE]
Sergik1977 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить, является ли матрица магическим квадратом. drakon803 Помощь студентам 11 14.12.2011 14:29
По введенному номеру билета определить, является ли билет счастливым. veter_s_morya Паскаль, Turbo Pascal, PascalABC.NET 26 14.06.2011 20:39
Перевод вещественного числа в двоичный код shepelin Свободное общение 9 06.07.2008 10:00
Проверка – является ли раскладка клавиатуры правильной для вводимого текста Xandr Общие вопросы Delphi 7 02.11.2007 09:25
как из Delphi определить под какой учетной записью осуществлен вход в систему zetrix Безопасность, Шифрование 1 29.10.2006 11:14