Главная страница
Навигация по странице:

  • Список литературы

  • Лабораторная работа по программированию. ЛР №2. Условие задачи 1


    Скачать 195.71 Kb.
    НазваниеУсловие задачи 1
    АнкорЛабораторная работа по программированию
    Дата04.05.2023
    Размер195.71 Kb.
    Формат файлаdocx
    Имя файлаЛР №2.docx
    ТипАнализ
    #1107584



    Содержание

    Введение...........................................................................................................................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-размер массива}

    begin

    write('Введите размер массива n=');

    readln(n);

    k:=0; {начальное значение}

    for i:=1 to n do {цикл для ввода последовательности}

    begin

    write('Введите элемент массива: ');

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

    alphabet = set of 'a'..'z';

    var

    abc: alphabet; {множество английских букв}

    stroka: string; {вводимая строка}

    a: char; {параметр цикла}

    i: byte; {параметр цикла}

    begin

    write('Введите строку: ');

    repeat

    readln(stroka);

    until(stroka<>''); {защита от ввода пустой строки}

    for i:=1 to length(stroka) do

    Include(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.


    написать администратору сайта