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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 11:55   #1
Roman1295
Пользователь
 
Регистрация: 06.09.2012
Сообщений: 51
По умолчанию Ввести строку, содержащую цифры. Определить является ли она записью шестнадцатеричного числа.

Код:
//Ввести строку, содержащую цифры. Определить является ли она записью шестнадцатеричного  числа.
var s :string; b: set of char;  i: integer;
begin
b:=['0'..'9']; //Задали множество 16-ричных символов
readln(s);
For i:=1 to length(s) do
If not(s[i] in b) then writeln('Нет') else
writeln('Да');
end.
Просьба проверить правильность выполнения.
Спасибо.
Roman1295 вне форума Ответить с цитированием
Старый 23.12.2012, 12:48   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

1)
Цитата:
b:=['0'..'9'];
Неверно
2) Такой цикл тоже не верен!
Код:
cheker := ['0'..'9', 'A'..'F'];
i := 1;

while (s[i] in cheker) and (i <= Length(s)) do
     Inc (i);

WriteLn (i > Length(s))
Poma][a вне форума Ответить с цитированием
Старый 24.12.2012, 21:37   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Как вариант
Код:
  readln(s);
  val('$'+s, i ,q);
  writeln(not boolean(q));
eoln вне форума Ответить с цитированием
Старый 24.12.2012, 21:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
//Ввести строку, содержащую цифры. Определить является ли она записью шестнадцатеричного  числа.
var s :string; b: set of char;  i: integer;
begin
readln(s);
For i:=1 to length(s) do
If not(s[i] in ['0'..'9','A..F','a..f']) then begin
 writeln('Нет');readln;halt;
end;
writeln('Да');
end.
Так правильнее, если уж не отдаляться от топа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2012, 22:04   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Кавычки забыл
'A..F','a..f' ==> 'A'..'F','a'..'f'
eoln вне форума Ответить с цитированием
Старый 24.12.2012, 22:06   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Господин eoln, а можете чуть-чуть прокомментировать Ваше решение?
Poma][a вне форума Ответить с цитированием
Старый 24.12.2012, 22:16   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

val - старая "досовская" процедура умеет переводить в 8 (если память не изменяет),10,16-ричные системы. Для 16-ричной системы надо к числу приписать спереди символ $. В переменную q возвращается номер первого ошибочного символа (0 в случае успеха). Потом просто переводим 0 в false, а не ноль в true с помощью приведения типов и выводим противоположное (с помощью not) на экран.

Господин ... прям как при царе
eoln вне форума Ответить с цитированием
Старый 24.12.2012, 22:18   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Опаньки! А вот это уже очень-преочень интересно! Можно еще один вопрос : а чтобы перевести в 8-ную с.с. что нужно приписать?

Огромное спасибо!

P.S. До СССР-ского "товарищ" еще не дорос
Poma][a вне форума Ответить с цитированием
Старый 24.12.2012, 22:29   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а чтобы перевести в 8-ную с.с. что нужно приписать?
А паскаль только с 16-ричкой знаком. И то случайно...
Цитата:
Кавычки забыл
Ну дык... 21-е же было...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2012, 22:42   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ага, точно. Старый паскаль не умеет, а free понимает символ & для 8-ричной системы
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести число. Определить является ли оно степенью 2. Roman1295 Паскаль, Turbo Pascal, PascalABC.NET 3 23.12.2012 11:50
Ввести с клавиатуры строку. Посчитать количество слов в строке. Определить, что является разделителем слов. Вывести рез-ть на экра Газимов Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 02.03.2012 15:58
Является ли заданная строка правильной записью вещественного числа с возможным знаком и десятичной точкой Banny Паскаль, Turbo Pascal, PascalABC.NET 7 18.12.2008 22:28
Определить, является ли заданная строка правильной записью вещественного числа Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 2 18.10.2007 16:53