Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AlgStr / Библиотека / Разные источники / СД - Строки (метод ук-ия)

.pdf
Скачиваний:
34
Добавлен:
23.03.2015
Размер:
371.93 Кб
Скачать

program S_10_1;

var S:string; k:integer;

function S101(var S: string):integer; var i,n,k:integer;

begin

n:= ord(S[0]); k:=0;

for i:=1 to n do

if(S[i]<>' ')and((i=n)or(S[i+1]=' ')) then k:=k+1;

S101:=k

end; begin

writeln ('Введите строку'); readln (S);

k:=S10l(S);

writeln('Количество слов в строке =',k) end.

Другой вариант подсчета числа слов в строке реализован в виде функции

S102( S ). Здесь логическая переменная flag определяет начало слова: либо на-

чало строки, либо первый символ, отличный от пробела, следующий после пробела.

23

function S102(var S: string):integer; var i,n,k:integer;

flag:boolean; {признак начала строки или пробела} begin

n:= ord(S[0]); k:=0;flag:=true; for i:=1 to n do

if S[i]=' ' then flag:=true

else

if flag then begin

k:=k+1;

flag:=false

end;

S102:=k

end;

24

ЗАДАЧИ

1.Дана строка. Посчитать количество пробелов в строке.

2.Дано натуральное число N и символ C. Сформировать и вывести строку длины N, которая состоит из символов C.

3.Дано натуральное число N и символы C1 и C2. Сформировать и вывести строку длины N, которая состоит из чередующихся символов C1 и C2.

4.Дано целое число N (от 1 до 26). Сформировать и вывести строку из первых

N строчных букв латинского алфавита.

5.Дана строка. Сформировать и вывести строку, содержащую те же символы, между которыми вставлено по одному пробелу.

6.Дана строка, содержащая арифметическое выражение. Проверить правильность расстановки в строке круглых скобок (баланс открывающих и закрывающих скобок).

7.Дана строка и символы C1 и C2. Преобразовать строку, заменив в ней каж-

дый символ C1 символом C2.

8.Дана строка. Преобразовать строку, заменив все строчные латинские буквы одноименными прописными.

9.Дана строка. Зашифровать текст в строке, циклически сдвигая его вправо.

10.Дано целое число N и строка S. Преобразовать строку S в строку длины N

следующим образом: если длина строки S больше N, то отбросить последние символы, если длина строки меньше N, то в ее конец добавить точки.

11.Дана строка и символ C. Выяснить, встречаются ли в данной строке после-

довательность из трех стоящих рядом символом C.

12.Дана строка. Выяснить, является ли данная строка правильной записью идентификатора.

25

13.Дана строка, содержащая латинские буквы и скобки трех видов: "()", "[]", "{}". Если скобки расставлены правильно (то есть каждой открывающей соответствует закрывающая скобка того же вида), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная скобка, или, если закрывающих скобок не хватает, число –1.

14.Дана строка. Выяснить, является ли заданная строка палиндромом. Решить задачу двумя способами:

1)в два прохода по строке;

2)в один проход по строке.

Палиндром – слово или текст (в этом случае пробелы игнорируются), оди-

наково читающийся слева направо и справа налево (например, «казак» или «а луна канула»).

15.В заданной строке найти наибольшее количество цифр, идущих в нём подряд.

16.Дана строка, изображающая двоичную запись целого числа. Сформировать и вывести строку, изображающую десятичную запись этого же числа.

17.Дана строка, изображающая десятичную запись целого числа. Сформировать и вывести строку, изображающую двоичную запись этого же числа.

18.Дана строка. Вывести позицию первого вхождения заданного символа. Если символ отсутствует в строке, вывести сообщение об этом.

19.Дана строка. Вывести позицию первого вхождения заданной подстроки. Если подстрока отсутствует в строке, вывести сообщение об этом.

20.Дана строка. Вывести позицию последнего вхождения заданного символа. Если символ отсутствует в строке, вывести сообщение об этом.

21.Дана строка. Вывести позицию последнего вхождения заданной подстроки. Если подстрока отсутствует в строке, вывести сообщение об этом.

22.Даны строки S1 и S2. Проверить, имеются ли в строке S1 все символы, вхо-

дящие в строку S2.

26

23.Дана строка, содержащая полное имя файла (полный путь, имя и расширение). Выделить из этой строки имя файла с расширением.

24.Дана строка, содержащая полное имя файла (полный путь, имя и расширение). Выделить из этой строки имя файла без расширения.

25.Дана строка, содержащая полное имя файла (полный путь, имя и расширение). Выделить из этой строки имя первого каталога. Если файл содержится

вкорневом каталоге, то вывести символ «\».

26.Дана строка, содержащая полное имя файла (полный путь, имя и расширение). Выделить из этой строки имя последнего каталога. Если файл содержится в корневом каталоге, то вывести символ «\».

27.Дана строка. Напечатать первые вхождения каждой буквы латинского алфавита.

28.Дана строка, содержащая слова из латинских букв, соседние слова отделены друг от друга запятой, за последним словом – точка. Найти количество букв

всамом длинном слове.

29.Дана строка, содержащая запись вещественного числа в формате «мантисса – порядок» (например, 6.67E-001 или –2.3456E+003). Получить строку, содержащую число в формате с фиксированной точкой.

30.Дана строка, содержащая запись вещественного числа в формате с фиксированной точкой. Получить строку, содержащую число в формате «мантисса – порядок».

31.Дана строка. Удалить из нее все вхождения заданного символа.

32.Дана строка и два целых числа k и r (k < r). Удалить из нее все символы,

расположенные между символами с номерами k и r.

33.Даны строки S, S1. Удалить последнее вхождение подстроки S1 в строке S.

34.Даны строки S, S1, S2. Вставить в строку S перед каждым вхождением стро-

ки S1 строку S2.

27

35.Даны строки S, S1, S2. Вставить в строку S после каждого вхождения строки S1 строку S2.

Указание к решению задач 36-45

Словом будем называть последовательность символов, отличных от про-

бела и разделённых произвольным количеством пробелов. В начале и в конце строки, состоящей из слов, может быть произвольное количество пробелов.

36.Дана строка, состоящая из слов. Получить новую строку из последних сим-

волов всех слов исходной строки.

37.Дана строка, состоящая из слов. Найти:

1)номер первого по порядку слова, начинающегося с заданного символа;

2)среднее арифметическое длин всех слов и слово, длина которого наиболее близка к среднему.

38.Дана строка, состоящая из слов. Проверить, совпадают ли в нем первое и по-

следнее, второе и предпоследнее и т.д. слова.

39.Дана строка, состоящая из слов. Вывести слова, в которых нет повторяю-

щихся символов.

40.Дана строка, состоящая из слов. Преобразовать все слова по правилу:

1)заменить в слове все последующие вхождения его первого символа на символ «.» (количество пробелов между словами не изменять);

2)заменить в слове все предыдущие вхождения его последнего символа на символ «.» (количество пробелов между словами не изменять).

41.Дана строка, состоящая из слов. Вывести:

1)все слова в алфавитном порядке;

2)те слова, которые не нарушают лексикографический (алфавитный) порядок в строке.

28

42.Дана строка, состоящая из слов. Изменить порядок следования слов на об-

ратный без использования дополнительных строк.

43.Дана строка, состоящая из слов.

1)удалить все вхождения k-го по счету слова;

2)оставить только первое вхождение первого слова;

3)оставить только последнее вхождение k-го по счету слова;

4)поменять местами два слова с заданными номерами;

5)оставить только первое вхождение каждого слова;

6)оставить только последнее вхождение каждого слова;

7)удалить слова, встречающие более одного раза;

8)для каждого из слов указать, сколько раз оно встречается среди слов строки.

44.Даны две строки, состоящие из слов. Объединить строки в новую строку,

чередуя слова из первой и второй строк. Если одна из строк длиннее другой, то все оставшиеся слова добавьте в конец новой строки. В новой строке начальных и конечных пробелов нет, между словами по одному пробелу.

45.Даны две строки, состоящие из слов. Для них найти

1)множество всех слов, встречающихся в каждой строке;

2)самое длинное общее слово обеих строк;

3)самое короткое слово первой строки, которого нет во второй.

29

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

Задание 1

При выполнении заданий необходимо применить только посимвольную обработку строк.

1.Дана строка. Посчитать общее число латинских букв (строчных и прописных), входящих в строку.

2.Дана строка. Посчитать количество символов, отличных от цифр и пробела.

3.Дана строка, содержащая предложения. Предложения заканчиваются точками, восклицательными или вопросительными знаками. Найдите количество предложений в строке.

4.Дана строка, содержащая буквы, цифры и знаки арифметических операций «+», «-», «*», «/». Выяснить, каких символов в строке больше: букв, цифр или знаков.

5.Дана строка, содержащая текст. Зашифровать текст, циклически сдвигая его влево.

6.Дано целое число N (от 1 до 26). Сформировать строку из N последних про-

писных букв латинского алфавита в обратном порядке.

7.Дана строка. Вывести строку, содержащую те же символы, между которыми вставлено по N символов «*».

8.Даны две строки. Объединить их в одну, чередуя символы из первой и второй строки. Если одна из них длиннее другой, то все оставшиеся символы добавьте в конец новой строки.

9.Дана строка, содержащая слова из латинских букв; соседние слова отделены друг от друга запятой, за последним словом – точка. Определить количество слов, которые начинаются с заданной буквы.

30

10.Дана строка, содержащая слова из латинских букв; соседние слова отделены друг от друга запятой, за последним словом – точка. Определить количество слов, которые оканчиваются заданной буквой.

11.Дана строка и символы C1 и C2 . Выяснить, имеется ли в строке пара сосед-

ствующих символов C1 и C2 или C2 и C1.

12.В заданной строке найти наибольшее количество латинских букв, идущих в нём подряд.

13.Даны строка S и символ C. Найти номер первого символа строки, для кото-

рого этот символ и следующий совпадают с заданным символом C.

14.Дана строка, изображающую десятичную запись целого числа. Сформировать и вывести строку, изображающую восьмеричную запись этого же числа.

15.Дана строка, изображающую десятичную запись целого числа. Сформировать и вывести строку, изображающую шестнадцатеричную запись этого же числа.

16.Дана строка, изображающую двоичную запись целого числа. Сформировать

ивывести строку, изображающую восьмеричную запись этого же числа (без перевода в десятичную систему).

17.Дана строка, изображающую двоичную запись целого числа. Сформировать

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

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

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

20.Сформировать и вывести строку, содержащую следующую последователь-

ность цифр 122333 ... 99...9.

31

21.Сформировать и вывести строку, содержащую следующую последователь-

ность цифр 988777 ... 11...1.

22.Сформировать и вывести строку, содержащую следующую последователь-

ность цифр 123...923...9 ... 899.

23.Сформировать и вывести строку, содержащую следующую последователь-

ность цифр 987...187...1 ... 211.

24.Дана строка. Выяснить, является ли строка правильной записью положительного целого числа в десятичной системе счисления.

25.Дана строка. Выяснить, является ли строка правильной записью произвольного целого числа в десятичной системе счисления.

Задание 2

Задания выполнять в двух вариантах:

1)с использованием стандартных процедур и функций для работы со строками;

2)используя посимвольную обработку строк.

1.Дано целое число N и строка S. Преобразовать строку S в строку длины N

следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки меньше N, то в ее начало добавить точки.

2.Даны целые числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку, содержащую первые N1 символов строки S1 и последние N2 симво-

лов строки S2 в указанном порядке.

3.Дана строка. Удалить из нее первое и последнее вхождения заданного символа.

4.Дана строка. Удалить из нее все четные вхождения заданного символа.

32