Строки в Паскале
Строка в Pascal – это последовательность символов заключенных в апострофы. Переменную строкового типа данных определяет слово string:
Var <имя_переменной>: string[<длина строки>]; |
Длина строки может и не указываться, тогда она будет равна максимально возможному количеству символов — 255.
Для вывода строки указывается строка без скобок и их содержащего:
write(sing); |
Объединить строки можно при помощи операции +, а также воспользовавшись функцией Concat. Следующая программа сначала выводит строку, в которой объединены две другие, а затем выводит все три имеющиеся строковые переменные посредством функции Concat.
[spoiler]program stroki; uses crt; var sing, quant, sq: string; begin quant:=‘Квантовая’; sing:=‘cингулярность’; sq:=quant+‘ ‘+sing; writeln(sq); write(concat(sq, ‘ ‘,quant,‘ ‘, sing)); end. |
Сравнение двух строк в Паскале осуществляется операциями отношения (<,>,=,<>,<=,>=). При этом первый символ первой строки сравнивается с первым второй строки, потом второй со вторым, третий с третьим и т. д. до тех пор, пока не нарушится равенство (т. е. число символов, либо их количество в строках окажется разным), или операция не завершится.
'stroke' < 'stroke' {вернет false}
'stroke' > 'str' {вернет true}
'stroke' = 'stroke' {вернет true}
Удалить необходимые символы из строки можно с помощью процедуры Delete. В общем виде она имеет вид:
Delete(<строка>, <начиная с этого символа>, <количество>)
Вот так выглядит элементарная программа, в которой используется процедура Delete:
program stroki; uses crt; var sing, quant, sq: string; begin quant:=‘Квантовая’; delete(quant, 6, 4); write(quant); end. |
После ее выполнения на экране появится слово «Квант».
Для вставки подстроки в строку в Паскале есть процедура Insert.
lnsert(<строка 1>, <строка 2>, <начиная с этого символа>)
Строка 1 вставляется в строку 2, начиная с указанного символа. Так, например, для вставки нашей строки sing в строку quant нужно пописать следующий код.
quant:=’Квантовая’; sing:=’ cингулярность’; insert(sing, quant, 10); |
Длина строки – это количество символов содержащихся в переменной строкового типа. Чтобы узнать ее можно воспользоваться функцией Length, возвращающей целое число. Форма записи данной функции такая:
Length(<строка>);
В Паскале для копирования строк предусмотрена функция Copy:
Copy(<строка>, <начиная с этого символа>, <количество>);
Пример программы, использующей функцию Copy:
program stroki; uses crt; var sing, quant, sq: string; begin sq:=‘Квантовая cингулярность’; quant:=copy(sq, 1, 9); sing:=copy(sq, 10, 14); write(quant, sing); end. |
Из sq было произведено копирование в две другие строки.
Функция Pos определяет позицию подстроки в строке, и в случае удачи возвращает целое число соответствующее номеру элемента, с которого начинается вхождение. Общий вид функции:
Pos(<подстрока>, <строка>);
Преобразование числового значения осуществляется посредством процедуры Str:
Str(<числовая величина>, <строка>);
Пример программы:
program stroki; uses crt; var s: string; c: integer; begin c:=1000; str(c, s); write(s); {s = ‘1000’} end. |
Преобразовать строку в числовое значение можно при помощи процедуры Val:
Val(<строка>, <числовая величина>, <переменная>);
Строка должна состоять из числовых символов. Переменная нужна для записи номера первого ошибочного символа, в случае его наличия, либо нуля.
Пример кода:
program stroki; uses crt; var s: string; c, err: integer; begin s:=‘1000’; val(s, c, err); writeln(c); {c = 1000} writeln(err); {err = 0} s:=’12p23′; val(s, c, err); writeln(c); {c = 12} write(err); {err = 3} end. |
«A»: Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и инициалы.
Пример:
Введите фамилию, имя и отчество: Иванов Петр Семёнович П.С. Иванов |
«B»: Ввести адрес файла и «разобрать» его на части, разделенные знаком '/'. Каждую часть вывести в отдельной строке.
Пример:
Введите адрес файла: C:/Фото/2013/Поход/vasya.jpg C: Фото 2013 Поход vasya.jpg |
«C»: Напишите программу, которая заменяет во всей строке одну последовательность символов на другую.
Пример:
Введите строку: (X > 0) and (Y < X) and (Z > Y) and (Z <> 5) Что меняем: and Чем заменить: & Результат: (X > 0) & (Y < X) & (Z > Y) & (Z <> 5) |
Удачи!
Текст программы вставляем в комментарий к этому сообщению, в теме указываем Фамилию и Имя.
Жить стало лучше, жить стало веселей!
var stroka,chto,zamena: string;
dlina, nomer: integer;
begin
write ('Введите строку: ');
readln(stroka);
write ('Что меняем: ');
readln(chto);
write ('Чем заменить: ');
readln(zamena);
dlina:=length(chto);
nomer:=pos(chto,stroka);
if nomer=0 then writeln ('Ошибка! Не найдено.') else begin
while nomer>0 do begin
nomer:=pos(chto,stroka);
if nomer>0 then begin
delete(stroka, nomer, dlina);
insert(zamena, stroka, nomer);
end;
end;
writeln ('Результат: ',stroka);
end;
end.
var s,a,b:string;
c:integer;
Begin
Write('Введите строку: ');
Readln(s);
Write('Что меняем: ');
Readln(a);
Write('Чем заменить: ');
Readln(b);
For c:=1 to Length(s) do
if copy(s,c,length(a))=a then
begin
delete(s,c,length(a));
insert(b,s,c)
end;
Write('Результат: ');
Writeln(s);
end.
var s, c, h: string;
begin
write('Введите строку: ');
readln(s);
write('Что меняем: ');
readln©;
write('Чем заменить: ');
readln(h);
while Pos(c, s) > 0 do begin
Insert(h, s, Pos(c, s));
Delete(s, Pos(c, s), Length©);
end;
write('Результат: ', s);
end.
var i: byte;
begin
i:=1;
write('Введите строку:'); readln(a);
write('Что меняем:'); readln(b);
write('Чем заменить:'); readln©;
for i:=1 to length(a) do begin
if copy(a,i,length(b))=b then
begin
delete(a,i,length(b));
insert(c,a,i);
end;
end;
writeln('Результат:',a);
end.
var a, b, c: string;
begin
write('введите строку: ');
readln(a);
write('что меняем: ');
readln(b);
write('чем заменить: ');
readln©;
while Pos(b, a) > 0 do
begin
Insert(c, a, Pos(b, a));
Delete(a, Pos(b, a), Length(b));
end;
write('результат: ', a);
end.