Лабораторная работа по «Программированию»
Автор: Vasya19861901 • Декабрь 24, 2023 • Лабораторная работа • 1,314 Слов (6 Страниц) • 108 Просмотры
Министерство науки и высшего образования РФ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
ОТЧЕТ
Лабораторная работа №1
по дисциплине
«Программирование»
Введение
Лабораторная работа посвящена созданию программ с использованием простых управляющих структур (условных операторов, циклов) в рамках структурного программирования.
В данной работе рассматривается алгоритм написания двух программ на языке программирования Паскаль с описанием логики построения алгоритма, блок-схем и листинга готовых программ.
Анализ задачи №1.
Вариант 2. Даны целое n>2 и вещественные числа a1, b1, ..., an, bn (ai < bi). Рассматривая пары ai и bi как левые и правые концы отрезков на одной и той же прямой, определить концы отрезка, являющегося пересечением всех этих отрезков. Если такого отрезка нет, сообщить об этом. Например, если n = 3 и a1 = 0, b1 = 10, a2 = 1, b2 = 11, a3 = –1, b3 = 5, то результатом будет отрезок [1, 5].
Способ решения задачи, приведенный в данной лабораторной работе, это циклическое сравнение координат каждого отрезка, начиная со второго, с координатами первого отрезка. В случае, если левая координата попадает в область первого отрезка и находится правее левой координаты первого отрезка (т.е. ее значение больше), значит эта координата записывается в переменную и будет являться искомым значением. Последующие координаты сравниваются уже с этой переменной. Если же левая координата не попала в область первого отрезка, значит искомого отрезка не существует, о чем присвоим булевой переменной значение true и выведем сообщение пользователю. Правая координата вычисляется аналогичным образом, только ее значение должно быть меньше координаты первого отрезка (т.е. она находится левее).
Блок-схема алгоритма
[pic 1]
Рис.1 Блок-схема алгоритма задачи №1.
repeat
writeln('Введите число b', i, '. Число b', i, ' > a', i);
readln(b);
until b>a;
if x2>b then x2:=b;
end;
if er=false then //если хоть один отрезок не имеет общих точек с предыдущими
writeln('Искомый отрезок [', x1, '; ', x2, ']')
else writeln('Искомый отрезок не существует'); //то выводим на экран эту строку
end.
Анализ задачи №2
Вариант 2. Дана строка S. Создать новые строки из строки S: а) заменить все восклицательные знаки точками; б) заменить каждую точку многоточием (т.е. тремя точками); в) заменить каждую из групп стоящих рядом точек одной точкой; г) заменить каждую из групп стоящих рядом точек многоточием (т.е. тремя точками).
В данной работе реализован общий цикл перебора четырех вариантов изменения строки, внутри которого при помощи оператора case of выбирается нужный вариант.
а) записываем значение длины строки, далее в цикле перебираем каждый символ в поисках восклицательного знака, если находим, то в новую строку записываем точку, если нет, то записываем найденный символ.
б) тоже, что в варианте «а», только при нахождении точки записываем в новую строку найденный символ три раза, если нет, то записываем найденный символ один раз.
в) оператором pos ищем в строке две точки, если находим, то удаляем один символ (то есть одну точку из двух) и записываем измененную строку в новую строку. Оператор pos прогоняем в цикле, пока двоеточия не закончатся.
г) ищем в строке точку, если находим, то увеличиваем счетчик на единицу, затем проверяем следующий символ, если снова точка – увеличиваем счетчик. Таким образом находим все идущие подряд точки, а в новую строку записываем многоточие. Прерываем цикл, когда за точкой найден другой символ.
...