pascal - работа со строками
Вывод строки вертикально
program VerText_01;
var
s: string;
i, len: integer;
begin
s := 'Я учусь в 61 школе!';
len := length(s);
for i := 1 to len do
writeln(s[i]);
writeln('-------------');
end.
Вывод строки широко - через пробелы
program WideText_02;
var
s: string;
i, len: integer;
begin
s := 'Я учусь в 61 школе!';
len := length(s);
for i := 1 to len do
write(s[i], ' ');
writeln('-------------');
end.
program VerText_03;
var
s: string;
I, len: integer;
begin
readln(s);
len := length(s);
for i := 1 to len do
writeln( s[i] );
writeln('-------------');
end.
Вывод строки по диагонали (решение 1)
program VerText_04_1;
var
s: string;
i, j, len: integer;
begin
readln(s);
len := length(s);
for i := 1 to len do begin
for j := 1 to i do
write(' ');
writeln(s[i]);
end;
writeln('-------------');
end.
Вывод строки по диагонали (решение 2)
program VerText_04_2;
var
s, p: string;
i, j, len: integer;
begin
readln(s);
p := '';
len := length(s);
for i := 1 to len do begin
p := p + ' ';
write(p);
writeln(s[i]);
end;
writeln('-------------');
end.
Вывод строки пословно - каждое слово в новой строке
program WordText_05;
var
s, p: string;
i, j, len: integer;
begin
readln(s);
p := '';
len := length(s);
for i := 1 to len do begin
if s[i] = ' ' then begin
writeln(p);
p := '';
end
else
p := p + s[i];
end;
if length(s) > 0 then
writeln(p);
writeln('-------------');
end.
Вывод строки по диагонали из правого верхнего угла в левый нижний
program WordText_06;
var
s, p: string;
i, len: integer;
begin
readln(s);
p := '';
len := length(s);
for i := 1 to len do
p := p + ' ';
for i := len downto 1 do begin
write(p);
writeln( s[i] );
p := copy( p, 1, i-1 );
end;
writeln('-------------');
end.
Вывод строки по диагонали из правого верхнего угла в левый нижний
program WordText_07;
var
s, p: string;
i, len: integer;
begin
readln(s);
p := '';
len := length(s);
for i := 1 to len do
p := p + ' ';
for i := len downto 1 do begin
write(p);
writeln( s[ len - i + 1 ] );
p := copy( p, 1, i-1 );
end;
writeln('-------------');
end.
Вывод строки по диагонали из правого верхнего угла в левый нижний (подпрограмма)
program word_proc_08;
var
s: string;
i, len: integer;
procedure dia(var s1: string; mode: integer);
var
p: string;
begin
p := '';
len := length(s1);
for i := 1 to len do
p := p + ' ';
for i := len downto 1 do begin
write(p);
if mode = 1 then
writeln( s1[i] );
if mode = 2 then
writeln( s[ len - i + 1 ] );
p := copy( p, 1, i-1 );
end;
end;
begin
readln(s);
dia( s, 1);
writeln('-------------');
end.
Преобразование чисел в строку и обратно - функции str и val
program digits;
var
i, n, m: integer;
s: string;
begin
read(n);
str(n, s);
writeln('string: ', s);
val(s, m, i);
m := m + 1;
writeln(m);
end.
Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».
Пример:
Введите имя, отчество и фамилию:
Василий Алибабаевич Хрюндиков
Результат:
Хрюндиков В.А.
program FIO;
var s, name, name2: string;
n: integer;
begin
write('Введите имя, отчество и фамилию: ');
readln(s);
n:= Pos(' ', s);
name:= Copy(s, 1, n-1); { взять имя }
Delete(s, 1, n);
n:= Pos(' ', s);
name2:= Copy(s, 1, n-1);{ взять отчество }
Delete(s, 1, n); { осталась фамилия }
s:= s + ' ' + name[1] + '.' + name2[1] + '.';
writeln(s)
end.
Задача: Напишите программу, которая заменяет во всей строке одну последовательность символов на другую.
Пример:
Введите строку:
(X > 0) and (Y < X) and (Z > Y) and (Z <> 5)
Что меняем: and
Чем заменить: &
Результат
(X > 0) & (Y < X) & (Z > Y) & (Z <> 5)
s2 := '';
p := pos( 'and', s);
while p > 0 do begin
if p > 0 then begin
s2 := s2 + copy( s, 1, p-1);
s2 := s2 + '&';
delete( s, 1, p+2);
end;
p := pos( 'and', s);
end;
s2 := s2 + s;
writeln(s);
