Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проверка строки

2.0K
26 июля 2005 года
Asius
36 / / 06.10.2004
Допустим есть строки:
1) "5hr6b1fbdr4fdfhdfh3"
2) "5hr6b1fbdr4fdf2dfh3"

как сделать чтобы при проверке в первом случае n равнялось 2 (там цифры идут 1.3.4.5.6), а во втором 7 (1.2.3.4.5.6.)

Желательно как можно меньше циклов
373
27 июля 2005 года
unmoved
216 / / 28.11.2004
Цитата:
Originally posted by Asius
Допустим есть строки:
1) "5hr6b1fbdr4fdfhdfh3"
2) "5hr6b1fbdr4fdf2dfh3"

как сделать чтобы при проверке в первом случае n равнялось 2 (там цифры идут 1.3.4.5.6), а во втором 7 (1.2.3.4.5.6.)

Желательно как можно меньше циклов


Смотри и учись, это просто:):
var i,n,v,s:integer;
begin
n:=0;
for i:=1 to edit1.GetTextLen do
begin
s:=0;
v:=0;
val(edit1.Text, v, s);
if s=0 then n:=n + v;
end;
if n=21 then edit2.Text:= '7' else edit2.Text:= '2';
end;

11K
01 августа 2005 года
Jini
16 / / 24.06.2005
Цитата:
Originally posted by unmoved
Смотри и учись, это просто:):
var i,n,v,s:integer;
begin
n:=0;
for i:=1 to edit1.GetTextLen do
begin
s:=0;
v:=0;
val(edit1.Text, v, s);
if s=0 then n:=n + v;
end;
if n=21 then edit2.Text:= '7' else edit2.Text:= '2';
end;


А если в конце первой строки '3' заменить на '2', тогда что?
Думаю, так будет универсальнее:

 
Код:
function GetN(s: string): Integer;
var a: set of Byte;
begin
 a:=[];
 for Result:=1 to Length(s) do
  if s[Result] in ['0'..'9'] then a:=a+[StrToInt(s[Result])];
 Result:=1;
 while (Result<10) and (Result in a) do Inc(Result);
end;
373
02 августа 2005 года
unmoved
216 / / 28.11.2004
Цитата:
Originally posted by Jini
А если в конце первой строки '3' заменить на '2', тогда что?
Думаю, так будет универсальнее:
 
Код:
function GetN(s: string): Integer;
var a: set of Byte;
begin
 a:=[];
 for Result:=1 to Length(s) do
  if s[Result] in ['0'..'9'] then a:=a+[StrToInt(s[Result])];
 Result:=1;
 while (Result<10) and (Result in a) do Inc(Result);
end;


Не думаю, что в этом смысл есть, ведь сказано как можно меньше циклов.

11K
02 августа 2005 года
Jini
16 / / 24.06.2005
Цитата:
Originally posted by unmoved
Не думаю, что в этом смысл есть, ведь сказано как можно меньше циклов.


Я, конечно, не знаю точно, что нужно автору, но думаю, что целью алгоритма должно стать нахождение минимальной отсутствующей цифры в строке (за исключением нуля). Если заменить, как я уже говорил, в конце первой строки '3' на '2', то, несмотря на то, что правильный ответ 3, твой код выдаст 2. Он вообще может выдать только 2 или 7, других вариантов нет :) А по поводу количества циклов... Если можешь, предложи меньше, но с такой же функциональностью.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог