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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2014, 11:29   #1
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию удаление символов со строки.

Учу тип char. Есть такая задачка:
Код:
Г) Записи телефонных номеров обычно содержат дополнительные символы:
скобки, черточки, пробелы, например: 8(123)45-67-89. Предположим, что
пользователь их так и вводит. Пусть ваша программа удалит из такой строки все
символы, кроме цифр. Например, после ввода указанного выше номера она должна
напечатать: 8123456789.
Я решил доработать задачу и пользователь может еще писать и другие символы кроме тире и дужки. И хочу добавлять в строку символ если он только равен цифре. Как реализовать? Есть ли что типа chartostr?) Вот я пробовал, но не могу понять как ему подпихнуть цифры:
Код:
var c: char; a,l: integer; s,r: string;
begin
repeat
writeln ('enter phone number'); readln (s);
l:= length(s);
for a:=1 to l do
begin
if s[a]='0', '1', '2', '3', '4', '5' ,'6' ,'7', '8', '9' then
r:=r+s[a];
end;
writeln (r);
until l=0;
end.
Dimidrolus вне форума Ответить с цитированием
Старый 31.12.2014, 11:34   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

if s[a] in ['0'..'9'] then r:=r+s[a];

l плохой идентификатор, визуально трудно от единицы отличать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.12.2014, 11:39   #3
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
if s[a] in ['0'..'9'] then r:=r+s[a];

l плохой идентификатор, визуально трудно от единицы отличать
ну у меня пока проги маленькие)) типа length - длина) спасибо. сейчас почитаю за in.

спасибо) работает)
Код:
Running "d:\dev\pascal projects\21.exe "
enter phone number
kds394rhj23n3j25h325
39423325325
enter phone number
Dimidrolus вне форума Ответить с цитированием
Старый 31.12.2014, 11:45   #4
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
if s[a] in ['0'..'9'] then r:=r+s[a];

l плохой идентификатор, визуально трудно от единицы отличать
Обьясни плиз за этот in. Как и где его еще можно использовать?
Dimidrolus вне форума Ответить с цитированием
Старый 31.12.2014, 12:01   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Читай множества в паскале и операции с множествами
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.12.2014, 13:08   #6
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Код:
Пусть ваша программа напечатает введенную пользователем строку
вразрядку, добавляя подчёркивание либо пробел после каждого символа,
например: 'Pascal' преобразует в 'P_a_s_c_a_l'.
Код:
var c: char; a,l1,l2: integer; s,r: string;
begin
repeat
writeln ('enter string'); readln (s);
l1:= length(s);
for a:=1 to l1  do
begin
r:=r+s[a]+'_';
end;
l2:=length(r);
for a:=1 to l2-1 do
begin
r:=r+r[a];
end;
writeln (r);
until l1=0;
end.
Есть ли более умное решение? И, допустим я хотел бы юзать только одно значение L. Как ресетнуть переменную?


Код:
var c: char; a, l: integer; s,r: string;
begin
repeat
writeln ('enter string'); readln (s);
l:= length(s);
for a:=1 to l  do
begin
r:=r+s[a]+'_';
end;
l:=length(r);
for a:=1 to l-1 do
begin
r:=r+r[a];
end;
writeln (r);
until l=0;
end.
Dimidrolus вне форума Ответить с цитированием
Старый 31.12.2014, 13:21   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
l1:= length(s);
for a:=1 to l1  do
begin
  r:=r+s[a];
  if a<l1 then r:+r+'_';
end;
или так
Код:
l1:= length(s);
for a:=1 to l1  do  r:=r+s[a]+'_';
r:=Copy(r,1,Length(r)-1);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.01.2015, 01:50   #8
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
{Пусть ваша программа напечатает введенную пользователем строку
вразрядку, добавляя подчёркивание либо пробел после каждого символа,
например: 'Pascal' преобразует в 'P_a_s_c_a_l'.}

var s:string;
i:byte;
begin
s:='pascal';
i:=2;
while i<=length(s) do begin
insert('_',s,i);
inc(i,2) ;
end;
writeln(s);
end.
Цитата:
p_a_s_c_a_l
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 17.02.2017, 23:31   #9
quizi
Новичок
Джуниор
 
Регистрация: 17.02.2017
Сообщений: 1
По умолчанию

Код:
var s,r:string;
	i:integer;
begin
	write('Введите строку '); 
	readln(s);
	r:='';
	for i:=1 to length(s) do r:=r+s[i]+'_';
	s:='';
	for i:=1 to length(r)-1 do s:=s+r[i]; 
	writeln(s);
end.
quizi вне форума Ответить с цитированием
Старый 22.02.2017, 14:15   #10
iborisov
Пользователь
 
Регистрация: 09.12.2016
Сообщений: 13
По умолчанию

Извращаться, так уж извращаться.))

Код:
for i:=length(s) downto 2 do insert('_',s,i);
iborisov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки удаление символов Veryn4ik1993 C# (си шарп) 1 30.05.2013 12:14
С++ строки , удаление символов Bolisoff Помощь студентам 4 10.01.2012 00:46
Удаление символов из строки NAS1977mu Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.01.2011 13:05
Удаление символов из строки Jasper92 Общие вопросы C/C++ 1 17.01.2010 20:41
Удаление символов из строки stscolt Помощь студентам 0 28.12.2009 12:34