Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверить значение переменной, содержит она только цифры или нет 
:(
    Опции темы
Гость_Dmitriy
Дата 29.9.2005, 23:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

read(s);

после этого необходимо проверить:
если переменная s содержит числовое значение (например, "56"), то выполнять что-то;
если переменная содержит не числовое значение (например, "1q2w3e4r5t6y") - то выполять иное;

Как такое реализовать?
  Вверх
kent
Дата 30.9.2005, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 6.5.2005
Где: Russia

Репутация: нет
Всего: 1



Вот так можно:
Код

var  S : String;
       number : (Integer или Real);
       code : Integer;
..............................................
read(S);
Val(S,number,code);
if (code = 0) then //S - является числом
............................
else if (code <> 0) then //S - не является числом
.....................................

PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 30.9.2005, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



kent
Нафиг после else писать еще один if?!
PM   Вверх
fillman
Дата 30.9.2005, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.9.2005

Репутация: нет
Всего: нет



А по моему код программы неплохой! smile
PM MAIL   Вверх
Pakshin A. S.
Дата 1.10.2005, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Но если во всех ифах работать по акой же схеме, то в больших проектах будет падать производительность, т. к. целесообразней второй иф совсем убрать:
Код

if code = 0 then //S - является числом
............................
else //S - не является числом

Т. к по переходу else у нас уже заведомо известно, что code <> 0, т. к. не выполилесь первое условие самого ифа, а хзначит второй иф в данном месте будет выполняться всегда, что означает что его присутствие не нужно вообще...

PM   Вверх
kent
Дата 1.10.2005, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 6.5.2005
Где: Russia

Репутация: нет
Всего: 1



Цитата(lonely @ 30.9.2005, 20:15)
kent
Нафиг после else писать еще один if?!

Для наглядности...
PM MAIL ICQ   Вверх
Гость_Dmitriy
Дата 3.10.2005, 21:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Большое спасибо!
  Вверх
MFSham
Дата 4.11.2005, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.8.2005
Где: Беларусь, Гродно

Репутация: нет
Всего: 3



Может я давно не юзал Pascal, но по моему ф-ию Pos почему-то позабыли.
ИМХО проще Pos('56',s).
--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
kent
Дата 8.11.2005, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 6.5.2005
Где: Russia

Репутация: нет
Всего: 1



Цитата(MFSham @ 4.11.2005, 01:53)
Может я давно не юзал Pascal, но по моему ф-ию Pos почему-то позабыли.
ИМХО проще Pos('56',s).

MFSham, вообще то функция Pos ищет подстроку в строке и возвращает позицию её вхождения в строку, а не определяет является ли переменная числом или нет...
А если с помощью программы нужно не один раз определить, является ли переменная числом или нет, что каждый раз код переделывать???
PM MAIL ICQ   Вверх
MFSham
Дата 9.11.2005, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.8.2005
Где: Беларусь, Гродно

Репутация: нет
Всего: 3



Дело в том, что меня смутило слово "содержит". И я представил себе строку вида s='abc56cde'.
Исходя из этого я и предложил ф-ию Pos.
--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
darkart
Дата 9.11.2005, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: нет
Всего: 31



Ещё вариант:
Код

var
  S:string;
  sch:set of char;
  bolResult:boolean;
  i:integer;
begin
  sch:=['0'..'9'];//заполняем мн-во
  read(s);
  i:=Length(s);
  if i>0 then
  begin
    while(i>0) and (s[i] in sch) do
      dec(i);
    bolResult:=(i=0);
  end else bolResult:=False;
end;

PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.