как удалить символ со строки в программе паскаль? мне нужно из слова programm удалить символы чтобы получилось pramm
ДЕЛЕТЕ (ВАР С: СТРИНГ; ИНДЕХ, КАУНТ: ИНТЕДЖЕР)
процедура удаляет из строки-параметра С подстроку длиной КАУНТсимволов, начиная с символа под номером ИНДЕХ.
пример.
С: = ‘система турбо паскаль’;
ДЕЛЕТЕ (С, 8,6);
примеч. большие буквы в тексте нужно заменить на английские по транслитерации (почему то не позволяется вводить в ответ английские символы)
Ольга Каляева-Веселова
starget,s:string;
begin
starget:=’programm’;
s:=’rog’;
delete(starget,pos(s),length(s));
end;
удалит из строки starget строку s.
Удаление одинаковых символов
Оставить в строке только один экземпляр каждого встречающегося символа.
- s – исходная строка;
- s_new – конечная строка;
- c – переменная для очередного символа.
Алгоритм решения задачи:
- Взять очередной символ из s .
- Если он не содержится в s_new , присоединить его к этой строке.
var s, s_new: string; c: char; i: byte; begin readln(s); s_new := ''; for i:=1 to length(s) do begin c := s[i]; if pos(c, s_new) = 0 then s_new := s_new + c end; writeln(s_new); end.
hello world helo wrd
Как удалить символ из строки паскаль
Команды вставки и удаления
Навигация
Язык:
Русский
English
▄ Команды вставки и удаления
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
═════════════════════════╤══════════════════════
Режим вставки вкл\выкл │ Ctrl+V или Ins
Вставить строку │ Ctrl+N
Удалить строку │ Ctrl+Y
Удалить до конца строки │ Ctrl+Q Y
Удалить символ слева │ Ctrl+H или Backspace
Удалить символ │ Ctrl+G или Del
Удалить слово справа │ Ctrl+T
Код для вставки:
::
::
:: ГОСТ :: 
Поделиться:
//

Для форумов:
Для блогов:
Для Википедии:
![]() |
Хостинг предоставлен компанией «Веб Сервис Центр» при поддержке компании «ДокЛаб»
Как удалить символ из строки паскаль
Если повнимательнее присмотритесь к своему циклу, то поймете, что размер строки после каждой найденной запятой уменьшается. За счет этого происходит смещение
Ненавижу быть как все, но люблю, чтобы все были как я.
_____________
Пользователь
Регистрация: 14.05.2011
Сообщений: 30
Сообщение от MyLastHit
Наверное проще бы было здесь так:
for i:=1 to endstr do if s[i]<>',' then s1:=s1+s[i];
Если повнимательнее присмотритесь к своему циклу, то поймете, что размер строки после каждой найденной запятой уменьшается. За счет этого происходит смещение
Большое спасибо, сам бы точно не додумался до такого.
Регистрация: 12.01.2011
Сообщений: 19,500
Так происходит потому что строка уменьшается на 1 символ и вы «перепрыгиваете» его.
У меня получился только вот такой костыль (войдет в бесконечный цикл если запятая — последний символ строки):
for i:=1 to endstr do if s[i]=',' then begin Delete(s,i,1); i:=i-1; endstr:=endstr-1; end;
upd: а, уже выше нормальный вариант
Последний раз редактировалось Alex11223; 14.05.2011 в 22:27 .
