Как удалить символ из строки паскаль
Перейти к содержимому

Как удалить символ из строки паскаль

  • автор:

как удалить символ со строки в программе паскаль? мне нужно из слова 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 – переменная для очередного символа.

Алгоритм решения задачи:

  1. Взять очередной символ из s .
  2. Если он не содержится в 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 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *