Pascal: Проверь себя (строки в Паскале)

Решенные задачи: строки в Паскале

Вернуться к уроку

Работа со строками в Паскале: формирование строк

Pascal string 1: Дан символ C. Вывести два символа, первый из которых предшествует символу C в кодовой таблице, а второй следует за символом C.
Для решения понадобятся функции для работы с символьным типом данных.

* Из задачника М. Э. Абрамян (String3)

Проверить:

1
2
3
4
5
6
7
8
var
  C:char;
begin
 Write('C:');
 readln (C);
 Writeln('C1:',chr(ord(C)-1));
 Writeln('C2:',chr(ord(C)+1));
end.

Pascal string 2: Дан символ C, изображающий цифру или букву (латинскую или русскую). Если C изображает цифру, то вывести строку «digit», если латинскую букву — вывести строку «lat», если русскую — вывести строку «rus».

* Из задачника М. Э. Абрамян (String6)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
var
  C:char;
 
begin
 Write('C:');
 readln (C);
 
 case ord(C) of
  48..57: Writeln('digit');
  65..90,97..122: Writeln('lat');
  128..175,224..243: Writeln('rus');
 end;
end.

Pascal string 3: Дано четное число N>0 и символы C1 и C2. Вывести строку длины N, которая состоит из чередующихся символов C1 и C2, начиная с C1

* Из задачника М. Э. Абрамян (String9)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  N,i:integer;
  C1,C2:char;
  S:string;
 
begin
 Write('N:');
 Readln (N);
 Write('C1:');
 Readln (C1);
 Write('C2:');
 Readln (C2);
 S:='';
 for i:=1 to (N div 2) do S:=S+C1+C2;
 
 Writeln(S);
end.

Pascal string 4: Дана непустая строка S и целое число N>0. Вывести строку, содержащую символы строки S, между которыми вставлено по N символов «*» (звездочка)

* Из задачника М. Э. Абрамян (String12)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  N,i,i2:integer;
  S,S2:string;
begin
 Write('S:');
 Readln (S);
 Write('N:');
 Readln (N);
 S2:=S[1];
 for i:=2 to Length(S) do
  begin
   for i2:=1 to N do 
      S2:=S2+'*';
   S2:=S2+S[i];
  end;
 Writeln(S2);
end.

Строки в Паскале: посимвольный анализ и преобразование строк

Pascal string 5: Дано целое положительное число. Вывести символы, изображающие цифры этого числа (в порядке справа налево).
Для решения понадобятся функции для работы со строками

* Из задачника М. Э. Абрамян (String21)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
var
  N,i:integer;
  S:string;
 
begin
 Write('N:');
 Readln (N);
 
 Str(N,S);
 for i:=Length(S) downto 1 do Write(s[i]);
end.

Pascal string 6: Дана строка, изображающая арифметическое выражение вида «<цифра>±<цифра>±…±<цифра>», где на месте знака операции «±» находится символ «+» или «» (например, «4+7–2–8»). Вывести значение данного выражения (целое число).

Для решения возможно понадобятся функции для работы с символами

* Из задачника М. Э. Абрамян (String23)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  i,Rez,Operation:integer;
  S:string;
 
begin
 Write('S:');
 Readln (S);
 Rez:=ord(S[1])-48; {в таблице Ascii цифры начинаются с 48 (0), т.е. если символ '0', то 48-48=0}
 
 for i:=2 to Length(S) do
  begin
   if (ord(S[i]) in  [48..57]) then Rez:=Rez+operation*(ord(S[i])-48);
   if (ord(S[i]) = 43) then Operation:=1; //+
   if (ord(S[i]) = 45) then Operation:=-1; //-
  end;
 Writeln(Rez);
end.

Строки в Паскале: обработка строк с помощью стандартных функций

Pascal string 7: Дано целое число N>0 и строка S. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы «.» (точка).
Для решения понадобятся функции для работы со строками

* Из задачника М. Э. Абрамян (String26)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
 N,i:integer;
 S:string;
 
begin
 Write('N:');
 Readln(N);
 Write('S:');
 Readln(S);
 
 if length(S)>N then  delete(S,1,length(S)-N);
 if length(S)<N then  for i:=length(S) to N-1 do s:=s+'.';
 
 writeln(S);
end.

Pascal string 8: Дан символ C и строка S. Удвоить каждое вхождение символа C в строке S

Для решения понадобятся функции для работы со строками

* Из задачника М. Э. Абрамян (String28)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
 S:string;
 C:Char;
 i:integer;
begin
 Write('C:');
 Readln(C);
 Write('S:');
 Readln(S);
 i:=0;
 While(i<=length(S)) do
  begin
   if S[i] = C then
    begin
     Insert(C,S,i);
     inc(i);
    end;
   inc(i);
  end;
 writeln(S);
end.

Pascal string 9: Даны строки S и S0. Проверить, содержится ли строка S0 в строке S. Если содержится, то вывести True, если не содержится, то вывести False.

Для решения понадобятся функции для работы со строками

* Из задачника М. Э. Абрамян (String31)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
program String31;
var
 S,s0:string;
 C:Char;
 i:integer;
begin
 Write('S:');
 Readln(S);
 Write('S0:');
 Readln(S0);
 writeln(pos(S0,S)>0);
end.

Строки в Паскале: анализ и преобразование слов в строке

Pascal string 10: Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Найти количество слов, которые содержат хотя бы одну букву «А».

* Из задачника М. Э. Абрамян (String43)

Проверить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var
 S:String;
 i,Num,NumA:integer;
 
begin
  Write('S: ');
  Readln(S);
 
  i:=1;
  Num:=0;
  NumA:=0;
 
  While (i<=Length(S)) do
   begin
    if (S[i]=' ') then
     begin
      if NumA>0 then inc(num);
      NumA:=0;
     end;
 
    if S[i]=chr(128) then inc(NumA);  //Если кодировка в консоли и в IDE совпадают, условие можно заменить на S[i]='А'
 
    inc(i);
   end;
  Writeln(Num);
end.
Вернуться к уроку
Поделитесь уроком с коллегами и друзьями:
One Comment

    Ирина Колтакова

    Большое спасибо за строковые переменные. Рассказала ученикам — ВСЕ сразу поняли!!! Отличный сайт!

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

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

*
*


Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить