ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.12.2023

Просмотров: 68

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СодержаниеВведение...........................................................................................................................3Условие задачи № 1…………………………………………………………………....4Анализ задачи..................................................................................................................4Алгоритм решения задачи..............................................................................................4Описание используемых переменных,обоснование выбора типа данных..................................................................................4Блок-схема алгоритма.....................................................................................................5Листинг программы.........................................................................................................5Результат тестирования программы..............................................................................6Условие задачи № 2…………………………………………………………………….6Анализ задачи .................................................................................................................6Алгоритм решения задачи..............................................................................................6Описание используемых переменных,обоснование выбора типа данных..................................................................................7Блок-схема алгоритма.....................................................................................................7Листинг программы.........................................................................................................8Результат тестирования программы...............................................................................8Список используемой литературы.................................................................................9ВведениеВ данной лабораторной работе помимо простых типов применены «сложные» типы, такие как массив и множество.Каждое значение регулярного типа (массива) состоит из фиксированного числа элементов одного и того же базового типа (т. е. значение содержит фиксированное число однотипных компонент).Способ образования позволяет обозначать значения этих типов одним груп-повым именем, а доступ к отдельным элементам массивов посредством указанияэтого группового имени и порядкового номера (индекса) необходимого элемента.Для корректного определения регулярного типа необходимо задать две харак-теристики:• тип элементов массива,• количество и «способ нумерации» элементов.Программист сам должен определить тип массива в разделе type.type<тип массива> = array[<тип индекса>] of<тип элементов>;Типом индекса может быть ограниченный тип

, символьный тип, перечислимый

тип. Тип элементов массива может быть любой.

Чтобы ввести в язык Паскаль вычислительную структуру множеств, используют множественный тип. Значения множественного типа, так же, как и массивы, строятся из нескольких значений одного (базового) типа. Однако в отличие от массивов значение множественного типа может содержать любое количество различных элементов базового типа — от нуля элементов (пустое множество) до всех возможных значений базового типа. Иными словами, возможными значениями переменных множественного типа являются все подмножества значений базового типа.

Множественный тип задается с помощью двух служебных слов — set и of—

и следующего за ним базового типа.


  • Все значения базового типа в множестве должны быть различны.

  • Порядок «расположения» элементов в множестве никак не фиксируется.
Задача 1Дана последовательность из n целых чисел. Определить количество инверсий в этой последовательности (т.е. таких пар элементов, в которых большое число находится слева от меньшего: xi > xj при i < j).Анализ задачиУсловие наличия инверсии в заданной последовательности – если предыдущий элемент больше последующего. Поэтому будем последовательно сравнивать элемент за элементом и суммировать количество инверсий.Алгоритм решения задачи:

  1. Запрашиваем у пользователя размер массива и саму последовательность.

  2. Задаём начальное значение количества инверсий равным 0.

  3. В цикле с параметром задаём условие наличия инверсии (xi > xj при i < j). При выполнении условия увеличиваем количество инверсий на 1.

  4. Выводим значение количества инверсий на экран.
Переменные:mas – массив для хранения числовой последовательности (массив типа integer, т.к. последовательность целочисленная);i – параметр циклов (тип integer, т.к. используется в индексах массива);n – размер массива (тип integer, т.к. целое число);k – количество инверсий (тип integer, т.к. целочисленное и не больше размера массива).Блок-схема алгоритма:Листинг программы:program lab_2_zad_1;const m=100; {максимальный размер массива}var mas:array[1..m] of integer; {массив для хранения последовательности}i, k, n: integer; {i-параметр цикла; k-количество инверсий; n-размер массива}

beginwrite('Введите размер массива n=');readln(n);k:=0; {начальное значение}for i:=1 to n do {цикл для ввода последовательности}beginwrite('Введите элемент массива: ');readln(mas[i]);end;for i:=1 to n-1 do {цикл для подсчета инверсий}if mas[i]>mas[i+1] then k:=k+1; {условие наличия инверсии}writeln('Количество инверсий в данной последовательности:', k);end.Результат выполнения программы:Задание 2Дана строка. В алфавитном порядке напечатайте (по разу) все строчные латинские согласные буквы, входящие в эту строку. Указание: гласные буквы — а, e, i, o, u; остальные — согласные. Решение задачи простое, если вы будете использовать множества.Анализ задачиДля решения этой задачи создадим множество строчных букв латинского алфавита, которое заполним буквами из введенной строки. Удалим из этого множества все согласные, затем выведем на печать оставшиеся буквы в алфавитном порядке.Алгоритм решения задачи:

  1. Запрашиваем у пользователя ввод строки.

  2. Заполняем множество символами из введенной строки.

  3. Вычитаем из данного множества множество гласных букв.

  4. С помощью цикла с параметром символьного типа выводим оставшиеся буквы из множества.
Переменные:abc – множество для хранения букв введенной строки (тип множества всех строчных букв латинского алфавита);stroka – используется для ввода строки (тип string, т.к. строка неопределенной длины);a – параметр цикла для вывода (тип char, т.к. параметр должен перебирать все буквы алфавита);i – параметр цикла для заполнения множества (тип byte, т.к. длина строки не более 255).Блок-схема алгоритма:Листинг программы:program lab_2_zad_2;typealphabet = set of 'a'..'z'; varabc: alphabet; {множество английских букв}stroka: string; {вводимая строка}a: char; {параметр цикла}i: byte; {параметр цикла}begin write('Введите строку: ');repeatreadln(stroka);until(stroka<>''); {защита от ввода пустой строки}for i:=1 to length(stroka) doInclude(abc, stroka[i]); {заполняем множество}abc:=abc-['a', 'e', 'i', 'o', 'u']; {удаляем гласные}
for a:='a' to 'z' do {выводим буквы в алфавитном порядке}if (a in abc) then write(a);end.Результат выполнения программы:Список литературы1. Зюзьков В. М. Программирование : учеб. пособие / В. М. Зюзьков. — Томск : Эль Контент, 2013. — 186 с. 2. Немнюгин С. А. Turbo Pascal. Программирование на языке высокого уровня : учебник для вузов / С. А. Немнюгин. — 2-е изд. — СПб. : Питер, 2005. — 543 с. 3. Немнюгин С. А. Turbo Pascal : учеб. пособие для вузов / С. А. Нем-нюгин. — СПб. : Питер, 2003. — 491[5] с. 4. Фаронов В. В. Турбо Паскаль 7.0: Практика программирования / В. В. Фаронов. — М. Нолидж, 2003. — 415 с. 5. Немнюгин С. А. Turbo Pascal: Практикум / С. А. Немнюгин. — 2-е изд. — СПб.: Питер, 2003. — 267 c.