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

Отчет по лабораторной работе №2docx

.docx
Скачиваний:
10
Добавлен:
17.02.2023
Размер:
180.87 Кб
Скачать

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

ОТЧЕТ

Лабораторная работа № 2

по дисциплине «Программирование»

Выполнил студент:

Доценко Илья Сергеевич

специальность 09.03.01

СОДЕРЖАНИЕ

1. Введение 3

2. Решение задачи №1 4

2.1. Описание используемых переменных 4

2.2. Описание алгоритма 5

2.3. Блок-схема алгоритма 6

2.4. Тестирование программы 7

3. Решение задачи №2 8

3.1. Описание используемых переменных 8

3.2. Описание алгоритма 8

3.3. Блок-схема алгоритма 9

3.4. Тестирование программы 10

4. Заключение 10

ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1 12

ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2 13

1. Введение

Лабораторная работа N 2 посвящена созданию программ с использованием массивов (одномерных и матриц) и множеств. В этих программах полезно использовать подпрограммы.

2. Решение задачи №1

var

A : array [1..6,1..6] of boolean;

B : array [1..5,1..5] of boolean;

n,k : 1..6;

Получить массив B из массива A удалением n-ой строки и k-го столбца.

2.1. Описание используемых переменных.

A – двумерная матрица булевых значений размерностью 6 * 6;

B – двумерная матрица булевых значений размерностью 5 * 5;

C – двумерная матрица булевых значений размерностью 5 * 5;

n, k: 1..6 - ;

i – счетчик;

2.2. Описание алгоритма

  1. Вводим номера столбца и строки, которые необходимо удалить;

  2. Перебираем числовой ряд от 1 до 6, и если индекс строки и столбца не соотвествует ранее введенным значениям, то заполняем матрицу С;

  3. Выводим построчно матрицу С

2.3. Блок-схема алгоритма

Рис 2.3.1 Блок-схема основной части программы.

Рис 2.3.2 Блок-схема процедуры printMatrix.

Рис 2.3.3 Блок-схема процедуры deleteRowsAndColumns.

Рис. 2.3Блок-схема алгоритма основной программы Блокх

2.4. Тестирование программы

Срока 4, столбец 5:

Рис. 2.4.1

Срока 4, столбец 5:

Рис. 2.4.2

3. Решение задачи №2

Дана строка. В алфавитном порядке напечатайте (по разу) все большие латинские гласные буквы, входящие в эту строку. Указание: гласные буквы - а, e, i, o, u; остальные — согласные. Решение задачи простое, если вы будете использовать множества.

    1. Описание используемых переменных

Глобальные:

i - счетчик;

stdinput –переменная для ввода строки из стандартного ввода;

uppercaseLettersOnly – переменная, в которую записывается строка, соержащая только заглавные символы из введенной строки;

sortedResult – результат сортировки строки из uppercaseLettersOnly;

Локальные переменные процедуры sorting:

i - счетчик;

minChar – символ с минимальным индексом ASCII.

3.2. Описание алгоритма

  1. Вводим строку

  2. Проверяем, что строка не пуста

  3. Последовательно для каждого символа из введённой строки сравниваем с множеством заглавных гласных латинских букв , а так же проверяем на уникальность;

  4. Сортируем полученную последовательность;

  5. Выводим результат

3.3. Блок-схема алгоритма

Рис 3.3 Блок-схема основной части программы.

Рис 3.4 Блок-схема процедуры sorting.

3.4. Тестирование программы

Вводим “ AAwdwAWGHHYEWIYTRUJERUU”

Рис. 3.4.1

Вводим “ФЖЩЦГМВ{UOAVWawdblawdoIUBAW)OADIAPWD()!*@&$Y!Y*(P#O(!@OUKANLKSFA:@E!53”

Рис. 3.4.2

4. Заключение

В процессе написания программ были применены циклическая конструкция.

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

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

ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1

(*

Задача 1

var

A : array [1..6,1..6] of boolean;

B : array [1..5,1..5] of boolean;

n,k : 1..6;

Получить массив B из массива A удалением n-ой строки и k-го столбца.

*)

var

A: array [1..6, 1..6] of boolean;

B: array [1..5, 1..5] of boolean;

C: array [1..5, 1..5] of boolean;

n, k: 1..6;

i: integer;

procedure deleteRowsAndColumns(n, k: 1..6);

var

i, j, ci, cj: integer;

begin

ci := 1; cj := 1;

for i := 1 to high(A) do

for j := 1 to high(A[i]) do

begin

if (i <> n) and (j <> k) then

begin

C[ci, cj] := A[i, j];

ci := ci + 1; cj := cj + 1;

end;

end;

end;

procedure printMatrix();

var

i: integer;

begin

writeln('Дана матрица А:');

for i := 1 to high(A) do

begin

println(A[i]);

end;

writeln('Преобразуем ее к виду матрицы B:');

for i := 1 to high(B) do

begin

println(B[i]);

end;

writeln('Для чего удалим указанные стоблец и строку.');

end;

begin

printMatrix;

writeln('Введите номер строки в диапазоне от 1 до 6');

readln(n);

writeln('Введите номер столбца в диапазоне от 1 до 6');

readln(k);

if (n >= 1) and (n >= 6) and (k >= 1) and (k <= 6) then deleteRowsAndColumns(n, k);

for i := 1 to high(B) do

begin

println(C[i]);

end;

end.

ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2

(*

Задача 2

Дана строка. В алфавитном порядке напечатайте (по разу)

все большие латинские гласные буквы, входящие в эту строку.

Указание: гласные буквы — а, e, i, o, u; остальные — соглас-

ные. Решение задачи простое, если вы будете использовать

множества.

*)

program UseSetsToOptimizeYourUslessWork;

var

i: integer;

stdinput, uppercaseLettersOnly, sortedResult: string;

procedure sorting(sortInput: string);

var

i: integer;

minChar: char;

begin

minChar := 'Z';

if length(sortInput) > 0 then

begin

for i := 1 to length(sortInput) do

begin

if sortInput[i] < minChar then minChar := sortInput[i];

end;

sortedResult := sortedResult + minChar;

delete(sortInput, pos(minChar, sortInput), 1);

sorting(sortInput);

end;

end;

begin

uppercaseLettersOnly := '';

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

readln(stdinput);

for i := 1 to length(stdinput) do

if (stdinput[i] in ['A', 'E', 'I', 'O', 'U']) and (pos(stdinput[i], uppercaseLettersOnly) = 0) then

uppercaseLettersOnly := uppercaseLettersOnly + stdinput[i];

sorting(uppercaseLettersOnly);

writeln(sortedResult);

end.

2023 г.