Строки, Pascal

Ответить
VistBacK
Сообщения: 9
Зарегистрирован: 19 сен 2008, 09:59

Помогите Пожалуйста Решить Одну Задачку в Паскале!!!Буду очень благодарен!!!
Вот собственно:
Дана строка, состоящая из цифр и букв. Сформировать другую строку,содеражащую только цифры предыдущей строки,в том же порядке.
S1:=`12ab4c8d3`
S2:=`12483`
Заранее СПАСИБО!
Аватара пользователя
demon416
Сообщения: 178
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

как то так: (не проверял паскаля нет под рукой)

Код: Выделить всё

program test;

var
i: integer;
s1,s2 : string;

begin
s1:='12ab4c8d3';
s2:='';
for i:=1 to length(s1) do
case s1[i] of
'0' : s2:=s2+'0';
//тут аналогично другие цифры сделаеш
'9' : s2:=s2+'9';
end;
end.
ака хинт: коментируйте код, самим же легче будет разобраться ;)
VistBacK
Сообщения: 9
Зарегистрирован: 19 сен 2008, 09:59

спасибо большое!А я думал тут как то через delete,с условием.
Аватара пользователя
demon416
Сообщения: 178
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

вариантов куча этот просто самый наглядный :)
ака хинт: коментируйте код, самим же легче будет разобраться ;)
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

я бы предложил другой вариант, либо:

Код: Выделить всё

begin
  s1:='12ab4c8d3';
  s2:='';
  for i:=1 to length(s1) do
    if  (s1[i]>='0') and (s1[i]<='9') then s2:=s2+s1[i];
  WriteLn(s2);
end.
либо, через множества:

Код: Выделить всё

begin
  s1:='12ab4c8d3';
  s2:='';
  for i:=1 to length(s1) do
    if s1[i] in ['0'..'9'] then s2:=s2+s1[i];
  WriteLn(s2);
end.
VistBacK
Сообщения: 9
Зарегистрирован: 19 сен 2008, 09:59

а можно все таки как нибудь с delete пожалуйста...=)
Аватара пользователя
demon416
Сообщения: 178
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

а за чем?
нужно одной строкой обойтись?
ака хинт: коментируйте код, самим же легче будет разобраться ;)
VistBacK
Сообщения: 9
Зарегистрирован: 19 сен 2008, 09:59

Ну как бы надо с делитом!=)всем большое спасибо за помощь!!!
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Код: Выделить всё

S2 := S1;
for i:= Length (S2) downto 1 do begin
  if (NOT (S2 [i] in ['0'..'9'])) then
    Delete (S2, i, 1);
end;
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

BBB, угу. всё хорошо. только господину VistBacK'у 5 дней назад уже помогли на другом форуме (он на нескольких форумах запостил одну и ту же просьбу...) (конкретно - здесь
Ответить