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

Рейтинг

Проблемы с госуслугами, медленный интернет или плохая связь? Напишите об этом — Минцифры поможет с решением