Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2010, 23:42   #1 (permalink)
dima112
Новичок
 
Регистрация: 20.12.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Строки

Pascal ABC

Вот программа в которой надо удалить символ *. Как мне это сделать?
Еще в этой программе надо удвоить каждый символ отличный от *, до этого я еще не дошел, с удалением не разобрался..
Вот мой код, написанный не правильно

program qq;
uses crt;
var a:string;
i:byte;
n:integer;
begin
writeln('Введите строку');
readln(a);
i:=1;
for i:=1 to length(a) do
begin
if '*' = a[i] then
begin
delete (что здесь писать?) ;
end;
writeln(a);
end.

Последний раз редактировалось MrSTEP; 24.12.2010 в 00:09 Причина: Сменил заголовок темы. Модератор.
dima112 вне форума   Ответить с цитированием

Старый 23.12.2010, 23:42
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, поищите в этих постах решение своей проблемы

Строки в С
Строки
Строки
Строки
Строки
Строки

Старый 24.12.2010, 00:14   #2 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,920
Записей в дневнике: 10
Сказал(а) спасибо: 139
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28107
По умолчанию

Процедура удаляет один или несколько символов из строки. В аргументах сначала пишется имя строковой переменной, потом позиция, с которой нужно удалять, и затем количество удаляемых символов. Кстати, последние два параметра я мог перепутать местами, проверьте
MrSTEP вне форума   Ответить с цитированием
Старый 24.12.2010, 00:17   #3 (permalink)
Olga)
Новичок
 
Регистрация: 23.12.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А можно пример самой процедуры? Чтобы поняла..

Последний раз редактировалось Olga); 24.12.2010 в 00:22
Olga) вне форума   Ответить с цитированием
Старый 24.12.2010, 00:20   #4 (permalink)
Olga)
Новичок
 
Регистрация: 23.12.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А можно просто удалить определенный символ? Не так как в операторе Delete, в которой нужно вписать позиции удаления "От" и "До". А вот просто хочу удалить Вот этот "*" символ в строке S.
Olga) вне форума   Ответить с цитированием
Старый 24.12.2010, 00:22   #5 (permalink)
Olga)
Новичок
 
Регистрация: 23.12.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

У меня точно такое же задание
Olga) вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 24.12.2010, 00:26   #6 (permalink)
dima112
Новичок
 
Регистрация: 20.12.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Да, можно саму процедуру показать?
dima112 вне форума   Ответить с цитированием
Старый 24.12.2010, 00:34   #7 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,920
Записей в дневнике: 10
Сказал(а) спасибо: 139
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28107
По умолчанию

Delete (а, i, 1);
где a - строка, i - номер позиции, откуда нужно удалять элемент.

Стандартной функции для удаления определенного символа нет.
MrSTEP вне форума   Ответить с цитированием
Старый 24.12.2010, 00:40   #8 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,920
Записей в дневнике: 10
Сказал(а) спасибо: 139
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28107
По умолчанию

Хотя, можно применить для этого связку из двух функций: первая - n:=pos(a, s1); - находит первое вхождение подстроки s1 в строку a (если такого нет, возвращает 0), и вторая - собственно delete (а, n, 1); если n>0
MrSTEP вне форума   Ответить с цитированием
Старый 24.12.2010, 00:52   #9 (permalink)
dima112
Новичок
 
Регистрация: 20.12.2010
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Все равно не пойму.. Этот оператор можно использовать если мы заранее знаем положение заданного символа. А если допустим ввести строку: hjkdfh*skjdfh*kjhsd*. Как мне сделать чтобы программа удаляла все "*" ?

Даже если делать с помощью цикла.. Допустим

for i:=1 to length(a) do
begin
if '*' = a[i] then что здесь вписать чтобы удалил его?
dima112 вне форума   Ответить с цитированием
Старый 24.12.2010, 00:55   #10 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,920
Записей в дневнике: 10
Сказал(а) спасибо: 139
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28107
По умолчанию

То, что я написал в посте #7
MrSTEP вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:27.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.