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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 00:20   #1
Nimiroff
 
Регистрация: 29.03.2011
Сообщений: 5
Вопрос Символы и строки.Задача

Здравствуйте, вот задача:

Записи телефонных номеров обычно содержат дополнительные символы (скобки,черточки,пробелы), - чтобы удобней запоминалось. Например: 8(123) 45-67-89. Предположим, что пользователь их так и вводит. Пусть наша программа преобразит строку с таким номером, удалив все символы, кроме цифр. Например, после ввода указанного выше номера она должна напечатать: 8123456789.

Весь вечер ломаю голову над этой задачей. Никак не могу додуматься как решить.

P.S. Задача на Паскале.

Последний раз редактировалось Nimiroff; 09.05.2011 в 00:24. Причина: P.S.
Nimiroff вне форума Ответить с цитированием
Старый 09.05.2011, 01:34   #2
Barabulko
Новичок
Джуниор
 
Аватар для Barabulko
 
Регистрация: 09.05.2011
Сообщений: 2
По умолчанию

я так понимаю множества еще не прошли, тогда простыми вложенными циклами
Цитата:
var a,b:string;
i,j:integer;
begin
b:='-() ';
write('phone number ? - ');
readln(a);
for i:=1 to length(a) do
for j:=1 to length(b) do
if a[i]=b[j] then delete(a,i,1);
writeln('true number - ',a);
readln;
end.
в переменную b можно добавить другие знаки, если они необходимы для удаления
Barabulko вне форума Ответить с цитированием
Старый 09.05.2011, 11:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно проще, использую дополнительную строку для результата:
Код:
var s, sRes : string;
  i : integer;
begin
   WriteLn; Write('Введите номер телефона: ');
   Readln(s);

   {обработка}
   sRes := '';
   for i:=1 to Length(s) do
     if s[i] in ['0'..'9'] then
        sRes := sRes + s[i];
 Writeln('Номер телефона: ', sRes);
 readln
end.
p.s. если операция с проверкой вхождения символа в множество вызывает проблемы, то можно её легко заменить на банальную проверку:
Код:
     if (s[i]>='0') and (s[i]<='9') then
        sRes := sRes + s[i];
Но, конечно же, много лучше, разобраться с типом "множество" и изучить операции с ним.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2011, 22:09   #4
Nimiroff
 
Регистрация: 29.03.2011
Сообщений: 5
По умолчанию

Всем спасибо! Разобрался
Nimiroff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на C++. Тема: символы и строки anny10 Помощь студентам 2 07.04.2011 18:53
Задача на С++. Символы,строки. cuzo Помощь студентам 7 07.01.2010 18:16
Задача на Символы и строки в Delphi. ClassicV Помощь студентам 2 30.11.2009 11:40