Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема: «Строковый тип данных»

Поиск

 

Тип-строка - последовательность символов произвольной длины (до 255). Строку можно рассматривать как массив символов, однако в связи с широким использованием строк и некоторыми особенностями по сравнению со стандартными массивами они выделены в отдельный тип данных.

У типа-строки в квадратных скобках может быть указан его размер (от 1 до 255). Если размер строки не указан, он считается равным 255, например:

Var

   Str: string[80];

   MaxStr: string;

Const

   January: string[10]=’Январь’;

 

Процедуры и функции обработки строковых переменных:

 

   Length (S: String): Integer; - функция определения длины строкового выражения.

   Пример использования в программе:

   Var

              S: String;

   begin

              Readln (S);

          Writeln ('"', S, '"');

              Writeln ('length = ', Length (S));

   end.

 

   Copy (S: String; Index: Integer; Count: Integer): String; - функция выделения подстроки из строки.

Пример использования в программе:

   Var S: String;

   begin

              S:= 'ABCDEF';

              S:= Copy (S, 2, 3); { 'BCD' }

   end.

 

   Concat (s1 [, s2,..., sn]: String): String; - функция склейки строк; аналогично операции «+» - последовательное соединение строк.

Пример использования в программе:

   Var

              S: String;

   begin

              S:= Concat ('ABC', 'DEF'); { 'ABCDE' }

   end.

 

   Delete (Var S: String; Index: Integer; Count: Integer); - процедура удаления подстроки из строки.

Пример использования в программе:

Var

s: string;

Begin

   s:= 'Honest Abe Lincoln';

   Delete (s,8,4);

   Writeln (s); { 'Honest Lincoln' }

End.

 

   Insert (Source: String; Var S: String; Index: Integer); - процедура вставки в строку Word2 подстроки Word1 с позиции n.

Пример использования в программе:

Var

   S: String;

Begin

   S:= 'Honest Lincoln';

   Insert ('Abe ', S, 8); { 'Honest Abe Lincoln' }

End.

 

   Pos (Substr: String; S: String): Byte; - функция определения позиции включения одной строки в другой;

Пример использования в программе:

   Var S: String;

   begin

              S:= ' 123.5';

              while Pos(' ', S) > 0 do

              S[Pos(' ', S)]:= '0';

   end.

 

Примеры решений задач

1. Объединение двух строк.

Program assign;

Var

   Str, str1,str2: string [80];

Begin

   Str1:=’Turbo’;

   Str2:=’Pascal’;

   Str:=str1+str2;

   Writeln (str);

End.


Список задач

1. Дана строка, подсчитать сколько раз встречается буква a.

2. Даны натуральное число n, символы S1, S2,..., Sn. Подсчитать, сколько раз среди данных символов встречается буква b.

3. Даны натуральное число n, символы S1, S2,..., Sn. Подсчитать:

а) сколько раз среди данных символов встречается символ "+" и сколько раз символ "*";

б) общее число вхождений символов "+", "-" и "*" в последовательность S1, S2,..., Sn.

4. Дана последовательность S1, S2,..., Sn, заменить в ней:

а) все восклицательные знаки точками;

б) каждую точку многоточием;

в) каждую из групп стоящих рядом точек одной точкой;

г) каждую из групп стоящих рядом точек многоточием.

5. Даны натуральное число n, символы S1, S2,..., Sn. Выяснить, имеются ли в последовательности S1, S2,..., Sn такие члены последовательности Si и Si+1, что Si - это запятая, Si+1 - это тире.

6. Даны натуральное число n, символы S1, S2,..., Sn. Получить первое натуральное i, для которого каждый из символов Si и Si+1, совпадают с буквой А. Если такой пары в последовательности S1, S2,..., Sn нет, то ответом должно быть число 0.

7. Даны натуральное число n, символы S1, S2,..., Sn. Известно что среди S1, S2,..., Sn есть по крайней мере одна запятая. Найти такое натуральное i, что:

а) Si - первая по порядку запятая;

б) Si - последняя по порядку запятая.

8. Даны натуральное число n, символы S1, S2,..., Sn. Преобразовать удалив каждый символ "*" и повторив каждый символ отличный от "*".

9. Даны натуральное число n, символы S1, S2,..., Sn, среди которых есть двоеточие.

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

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

в) получить все символы, расположенные между первым и вторым двоеточиями. Если второго двоеточия нет, то получить все символы после первого двоеточия.

10. Даны натуральное число n, символы S1, S2,..., Sn.

а) подсчитать наибольшее количество идущих подряд пробелов;

б) выяснить, верно ли, что в последовательности S1, S2,..., Sn имеются пять идущих подряд букв С.

11. Даны натуральное число n, символы S1, S2,..., Sn. Группы символов, разделённых пробелами (одним или несколькими) и не содержащим пробелов внутри себя будем называть словами.

а) подсчитать количество букв "а" в последнем слове данной последовательности.

б) найти количество слов, начинающихся с буквы "с".

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

г) подсчитать количество слов в данной последовательности.

д) найти какое-нибудь слово, начинающиеся с буквы "а".

е) преобразовать данную последовательность, заменяя всякое вхождение слова "это" на слово "то".

ж) найти длину самого короткого слова.

з) найти длину самого длинного слова.

и) удалить все символы, не являющиеся буквами.

к) заменить все малые буквы одноимёнными большими.

12. Найти первое слово самое короткое предложения.

13. Найти последнее слово самое короткое предложения.

14. Найти самое длинное слово в предложении.

15. Найти первое симметричное слово в предложении.

16. Заменить заданное слово предложения на другое слово.

17. Найти в предложении слова, которые начинаются на одну и ту же букву.

18. Напечатать предложение, удалив из него повторное вхождение слов.

19. Напечатать различные слова предложения, указав для каждого из них число его вхождений.

20. Напечатать предложение после удаления средней буквы для слов нечётной длины.

21. Напечатать слова предложения в алфавитном порядке.

 


Практическая работа № 9

 

Тема: «Одномерные массивы»

 

Массив это упорядоченная совокупность конечного числа данных одного типа. Простейшим примером массива может служить линейная таблица. Значения, образующие линейную таблицу, являются элементами массива, а их порядковые номера в таблице называются индексами. Можно сказать, что одномерный массив соответствует понятию вектора. Индекс определяет положение элемента массива относительно его начала.

 

Общая форма описания переменной:

Var <имя>: Array |<тип-индексов>| of<тип-элементов>

 

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

Например: M[1],M[2],…,M[N].

 

Для организации автоматического ввода значений следует воспользоваться функцией библиотеки CRT Random. Эта функция возвращает случайное число из диапазона от 0 до n. Для этого необходимо в основной программе инициализировать датчик случайных чисел командой Randomize.

Формат вызова функции Random:

Random (m), где m – значение, указывающее на правую границу диапазона выдаваемых значений.

Например: создание линейной таблицы размерностью 10, числами из диапазона от 0 до 10.

Program Vector_Full;

Const n=10;

Type vector = array [1..n] of Integer;

Var v:vector;

Procedure Enter (Var vect: vector);

 Var i: Integer;

Begin

For i:=1 to n do

  vect[i]:=Random(10);

End;

Begin

Randomize;

Enter (v);

End.

 

Примеры решений задач

1. Дана последовательность символов s 1, s 2,..., s 30. Требуется определить, совпадает ли начальная часть последовательности s 1, s 2,..., s 15 с ее концевой частью s 15, s 16,..., s 30.

Program Double;

   Label 1;

   Type t:array [1..15];

   Var x;t;y :char; t :integer;

Begin

   For i:=1 to 15 do read (x[i]);

   For i:=1 to 15 do

              Begin read (y);

                          if x[i]<>y then

begin write (‘не ‘);

goto 1;

end;

              end;

1: write (‘совпадают’)

End.

2. Найти максимальное число в последовательности.

program maximum;

Var       

a: array [1..10] of integer;

n: byte;

m: integer;

Begin

for n:=1 to 10 do

readln (a[n]);

m:=a[1];

for n:=2 to 10 do

         if a[n]>m then m:=a[n];

writeln ('maximum = ', m);

Readln

end.


Список задач

1. Даны натуральные числа n, A1,..., An. Определить количество членов Ak последовательности A1,..., An:

а) являющихся нечётными числами;

б) кратных 3 и некратных 5;

в) являющихся квадратами чётных чисел;

2. Даны натуральные числа n, A1,..., An. Найти те элементы Ak последовательности n, A1,..., An, которые:

а) являются удвоенными нечётными числами;

б) при делении на 7 дают остаток 1,2 или 5;

3. Даны целые числа А1,..., А20. Получить сумму трёх членов данной последовательности, которые:

а) кратны 5;

б) нечётны и отрицательны;

в) удовлетворяют условию |Ai| <i2.

4. Даны натуральное число n, целые числа A1,..., An. Найти количество и сумму тех членов последовательности, которые делятся на 5 и не делятся на 7.

5. Даны целые числа p, q, A1,...,A17 (p>q>0). В последовательности заменить нулями элементы, модуль которых при делении на p даёт в остатке q.

6. Даны натуральные числа n, p, целые числа A1,..., An. Получить произведение элементов последовательности, кратных p.

7. Даны натуральное число n, действительные числа A1,..., An. В последовательности получить удвоенную сумму всех положительных элементов.

8. Даны натуральное число n, действительные числа A1,..., An. В последовательности все отрицательные числа увеличить на 0.5, а все неотрицательные на 0.1.

9. Даны натуральное число n, действительные числа A1,..., An. В последовательности все элементы, меньше 2, заменить нулями. Кроме того, получить сумму элементов, принадлежащих отрезку [3,7], а также число таких элементов.

10. Даны натуральное число n, действительные числа A1,..., An. В последовательности все неотрицательные элементы, не принадлежащие отрезку [1,2], заменить на 1. Кроме того, получить число отрицательных элементов и число элементов, принадлежащих отрезку [1,2].

11. Даны натуральное число n, целые числа A1,..., An. Получить сумму положительных и число отрицательных элементов последовательности.

12. Даны натуральное число n, целые числа A1,..., An. Заменить все, большие 7, элементы последовательности числом 7. Вычислить количество таких элементов.

13. Даны целые числа A1,..., A15. Получить число отрицательных элементов последовательности A1,..., A10 и число нулевых элементов всей последовательности A1,..., A15.

14. Даны натуральное число n, целые числа А, Х1,..., Хn. Если в последова­тельности есть хотя бы один элемент, равный А, то получить сумму всех элементов, следующих за первым таким элементом; в противном случае ответом должно быть число 10.

15. Даны целые числа A1,..., A20. Получить последовательность В1,..., В20, которая отличается от исходной тем, что все нечётные элементы удвоены.

16. Даны натуральное число n, целые числа А, Х1,..., Хn. Определить, каким по счёту идёт в последовательности элемент, равный А. Если такого элемента нет, то ответом должно быть число 0.

17. Даны натуральное число n, действительные числа А1,..., Аn. Получить:

а) max (A1,...,An);

б) min (A1,...,An);

в) max (A2, A4,...);

г) min (A1, A3,...);

д) min (A2, A4,...) + max (A1, A3,...);

е) max (|A1|,..., |An|);

ж) max(-A1, A2, -A3,..., (-1)n An);

з) (min (A1,..., An))2 - min(A12,..., An2).

18. Дано натуральное число n. Выбросить из записи числа n цифры 0 и 5, а оставив прежним порядок остальных цифр. Например, из числа 59015509 должно получиться 919.

19. Даны натуральное число n, целые числа А1,..., Аn. Найти:

а) наименьшее из чётных чисел, входящих в последовательность
А1,..., An.

б) наибольшее из нечетных и количество чётных чисел, входящих в последовательность A1,..., An, An+1.

20. Даны натуральное число n, действительные числа А1,..., Аn. В последовательности определить число соседств:

а) двух положительных чисел;

б) двух чисел разного знака;

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

21. Даны целые числа С1,..., С15. Имеются ли в последовательности:

а) два идущих подряд нулевых элемента;

б) три идущих подряд нулевых элемента.

22. Даны натуральное число n. Получить все такие натуральные q, что n делится на q2 и не делится на q3.

23. Даны натуральные числа m, n. Получить все их натуральные общие кратные, меньше mn.

24. Даны целые положительные числа m, n. Получить все их общие делители.

25. Даны натуральное число n, действительные числа А1,..., Аn. Выяснить, является ли последовательность упорядоченной по убыванию.

26. Даны натуральное число n, целые числа А1,..., Аn.

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

б) Найти номер первого чётного элемента последовательности; если чётных элементов нет, то ответом должно быть число 0.

в) Найти номер последнего нечётного элемента последовательности; если нечётных элементов нет, то ответом должно быть число n+1.



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 218; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.94.189 (0.011 с.)