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);