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

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

  • автор:

Удалить символы из строки

Author24 — интернет-сервис помощи студентам

Ввести фамилию имя отчество в строку. определить количество вхождений символа а и длину введенной строки. Удалить из нее все символы а и б. Переменная должна быть string. Спасибо заранее.

Лучшие ответы ( 1 )

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

Ответы с готовыми решениями:

Даны две строки. Из множества символов первой строки удалить символы содержащиеся во второй строке.
составить программу для решения задач: 6. Даны две строки. Из множества символов первой строки.

Удалить символы из строки
Помогите пожалуйуста с задачей: Из строки символов удалить символы, коды которых лежат на.

Удалить символы из заданной строки
Дана строка s, содержащая менее чем 256 символов. Удалить из данной последовательности символов все.

Строка: Удалить все символы «а» заданной строки.
Дана строка. Удалить все символы «а».

Эксперт Pascal/Delphi

6809 / 4566 / 4819

Регистрация: 05.06.2014

Сообщений: 22,438

Лучший ответ

Сообщение было отмечено koshak98 как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
var s: string; i, ka: integer; begin readln(s); ka := 0; for i := 1 to length(s) do if s[i] = 'а' then inc(ka); writeln('Количество букв "a": ', ka); writeln('Длина слова: ', length(s)); for i := length(s) downto 1 do if (s[i] = 'а') or (s[i] = 'б') then delete(s, i, 1); writeln('Измененное слово: ', s); end.

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

Теоретический материал (Паскаль)

В большинстве применений компьютера алфавитно-цифровая информация используется наряду с числовой. Прежде чем мы сможем написать программу, которая манипулирует алфавитно-цифровыми знаками (литерами), нам потребуется тип данных для их представления. Для этих целей в языке Паскаль предусмотрен тип данных char. Так же, как переменная типа integer может хранить одно целое число, переменная типа char может хранить один символ. Например,

Var
Alpha : char;
Begin
Alpha :=’p’;
Alpha :=’+’;
Alpha :=’3′;
Alpha :=’ ‘;
Alpha :=»»;

Первый оператор присваивания записывает в переменную Alpha литеру р. Второй делает Alpha равной литере плюса (+). Третий делает Alpha равной символу 3. Заметим, что символ 3 отличается от целого числа 3 тем, что символ не может быть использован в арифметических операциях. Четвертый оператор присваивания делает Alpha равной литере пробела. Хотя литера пробела при печати не изображается, она является обыкновенным значением типа char. Последний оператор присваивания делает Alpha равной литере апострофа, это специальный случай, так как знак апострофа используется для ограничения значения типа char. Мы будем пользоваться множеством литер, находящимся в таблице кодов, называемой ASCII — американский стандартный код обмена информацией. Все символы упорядочены, т.к. имеют свой личный номер. Важно, что соблюдаются следующие отношения: ‘A’ < 'B' < 'C' < . < 'X' < 'Y' < 'Z' '0' < '1' < '2' < . < '7' < '8' < '9'Для проверки равенства или неравенства переменных типа char могут использоваться операторы сравнения. Задача. Написать программу, которая считывает две литеры и печатает больше, равна или меньше первая литера второй.

Program Sravnenie;
Var
First, Second : char;
Begin
write (‘Введите две литеры: ‘);
readln (First, Second);
write (‘Первая литера ‘);
if First > Second
then
write (‘больше второй. ‘)
else
if First = Second
then
write (‘равна второй. ‘)
else
write (‘меньше второй. ‘);
Еnd.

Так как char — порядковый тип, то к его значениям применимы следующие функции.

Succ — возвращает следующий символ литерного множества; Pred — возвращает предыдущий символ литерного множества; Ord — возвращает значение кода литеры; Chr — возвращает значение литеры по ее коду, является обратной по отношению к функции Ord.

Например, Succ(‘0′)=’1’ — символ, следующий за символом 0, равен символу 1. Pred(‘3′)=’2′ — символ, предшествующий символу 3, равен 2; Chr(65)=’A’ — символ, соответствующий коду 65, равен А; Ord(‘A’)=65 — код символа А равен 65.

Строка. Тип данных string. Строковые переменные, их описание. Длина строки. Операции над строками

Строка (string) — это последовательность литер. Литерные строки уже использовались нами в качестве аргументов операторa write при изучении темы «Ввод-вывод». Теперь познакомимся с ними подробнее. Тип данных (string) определяет строки с максимальной длиной 255 символов. Переменная этого типа может принимать значения переменной длины. Например,

MaxLine : string;
City : string[30]

Строковая переменная может иметь атрибут длины, определяющий ее максимальную длину. Текущая длина строковой переменной может быть определена с помощью встроенной функции Length. Для заданного значения типа string эта функция возвращает целое значение, показывающее количество литер в строке. Выражения, в которых операндами служат строки, называются строковыми выражениями. Над строками определены следующие операции: 1. Операция конкатенации (+) применяется для сцепления нескольких строк в одну. Например,
SumStr := ‘Турбо ‘+’Паскаль ‘+’7.0’ 2. Операции отношения (=, <>, >, =, <=) проводят посимвольное сравнение двух строк слева направо до первого несовпадающего символа. Большей считается та строка, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строками всегда имеет булевский тип. Например, выражение 'MS-DOS'<'MS-Dos' имеет значение True Если строки имеют различную длину, но в их общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки считаются равными, если они совпадают по длине и содержат одни и те же символы на соответствующих местах в строке. Для присваивания строковой переменной результата строкового выражения используется оператор присваивания. Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, то все лишние символы справа отбрасываются. Допускается смешение в одном выражении операндов строкового и символьного типа. К отдельным символам строки можно обратиться по номеру (индексу) данного символа в строке. Например, чтобы обратиться к третьему символу строки SumStr надо записать SumStr[3]. Запись SumStr[0] дает значение текущей длины строки. Для эффективного программирования алгоритмов обработки текстов необходимо хорошо понимать внутреннюю структуру представления строк в памяти. Строки реализованы достаточно просто. Для хранения строковых переменных выделяется количество байтов памяти, на единицу большее максимальной длины строки. Начальный байт этой памяти отводится для хранения текущей длины строки, следующие байты - для символов самой строки. Так как элементы строк стандартно нумеруются целыми числами, начиная с единицы, байт с длиной строки можно считать нулевым ее элементом. Такая структура памяти допускает прямой доступ к ее элементам. Важно отметить, что имеется возможность динамически управлять текущей длиной строки. Следующая программа показывает автоматическое изменение длины строки после тех или иных операций с нею. Обратите внимание, что общий (определяемый с помощью стандартной функции SizeOf) размер памяти, отведенной для хранения строки все время остается неизменным.

Program StringLength;
Var
S : string;
Begin
S:=»;
writeln (S,’ ‘,SizeOf(S),’ ‘,Length(S));
S:=’Пример длинной строки’;
writeln (S,’ ‘,SizeOf(S),’ ‘,Length(S));
Delete(S,7,8);
writeln (S,’ ‘,SizeOf(S),’ ‘,Length(S));
S:=S+’ символов’;
writeln (S,’ ‘,SizeOf(S),’ ‘,Length(S));
End.

Внимание! При решении задач со строковыми переменными Вы можете столкнуться с распространенной трудно обнаруживаемой ошибкой, когда после присваивания некоторым элементам строки символов ни содержимое, ни длина строки не изменяются. Разберемся, с чем это связано. Очень важно понимать, что при доступе к некоторому элементу строки значение ее текущей длины не проверяется. Это иллюстрирует следующая программа:

Program StringElements;
Var
S : string;
Begin
S:=’ABCD’;
writeln (S,’ ‘,Length(S));
S[5] := ‘E’;
writeln (S,’ ‘,Length(S));
End.

Присваивание пятому элементу строки некоторого значения не изменяет длину строки, что подтверждает вывод на экран ее содержимого и длины (конечно само присваивание реально произошло, но на значение текущей длины строки в нулевом байте это никакого влияния не оказало). Работа с элементами строки без учета ее текущей длины и является ошибкой программиста. Посмотрите следующую программу:

Program StringElements2;
Var
Str : string[26];
i : integer;
Begin
Str:=’A’;
for i := 1 to 26 do
Str[i] := Chr (Ord(‘A’)+i-1);
writeln(Str);
End.

Предполагается, что данная программа должна сформировать строку из 26 символов, содержимым которой является последовательность заглавных букв латинского алфавита. Однако вызов процедуры writeln показывает, что содержимым переменной Str будет строка из одного символа ‘А’. Природа совершенной ошибки заключается в том, что присваивание значений элементам строки не влияет на текущую длину, которая была установлена равной 1 при первом присваивании. Поэтому правильной будет следующая программа:

Program stringElements3;
Var
Str : string[26];
i : char;
Begin
Str:=»;
for i := ‘A’ to ‘Z’ do
Str := Str + i;
writeln(Str);
End.
  1. Delete (Str, Poz, N) — удаление N символов строки Str, начиная с позиции Poz.

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

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