1. Введение
Лабораторная работа № 1 посвящена созданию программ с использо-ванием простых управляющих структур: условного оператора, цикла. В за-дании используются простые типы данных (нет необходимости использовать массивы). Поэтому программы, написанные с использованием массивов, не засчитываются. Кроме того, программы должны быть разработаны в рамках структурного программирования. В частности, запрещается использовать операторы перехода и метки.
Задание состоит из двух задач. Решение первой задачи предусматрива-ет использование простых типов данных, а решение второй задачи – строко-вого типа данных. В ходе выполнения лабораторной работы необходимо со-ставить программы на языке Паскаль. В некоторых программах полезно определить вспомогательные функции или процедуры. Во всех задачах строки вводятся пользователем с клавиатуры.
Многие задачи лабораторной работы № 1 имеют вид: «Дана последо-вательность из n (действительных) целых чисел. Определить (вычислить) …» или «Даны натуральное n и вещественные числа a1, a2, …, an. Определить (вычислить) …» и т.п. Во всех этих задачах не требуется хранения исходных последовательностей значений. Вводится n, затем в цикле, работающем n раз, осуществляется пошаговый ввод чисел, и определенным образом посте-пенно вычисляется необходимый результат.
2. Анализ задачи № 1
Задача 1
Даны целое 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].
Поскольку для отрезка являющегося пересечением всех отрезков левая его граница является наибольшим значением последовательности a1, a2,…an, а правый конец является наименьшим значением последовательности b1, b2, …, bn, то для построения такого отрезка необходимо найти эти величины.
3. Решение задачи № 1
3.1. Описание используемых переменных, обоснование выбора типа данных
n – количество отрезков
i – счетчик цикла
a,b – начало и конец текущего отрезка
max_a –
min_b:real; // текущий самый наименьший правый конец отрезка
3.2. Описание алгоритма
Алгоритм решения задачи представлен блок-схемой приведенной на рисунке 1.
Рис. 1. Блок-схема решения задачи 1
3.3. Тестирование программы
Скриншоты тестирования программы приведены на рисунках 2 – 5.
Рис. 2. Реакция программы на неверный ввод n
Рис. 3. Реакция программы на неверный ввод концов отрезка
Рис. 4. Вывод решения при его наличии
Рис. 5. Сообщение об отсутствии решения
4. Заключение по задаче № 1
Была написана программа на языке программирования PascalABC. После отладки было проведено тестирование, которое показало, что про-грамма работает верно.
5. Анализ задачи № 2
Задача 2 Дана строка S. Создать новые строки из строки S:
а) заменить все восклицательные знаки точками;
б) заменить каждую точку многоточием (т.е. тремя точками);
в) заменить каждую из групп стоящих рядом точек одной точкой;
г) заменить каждую из групп стоящих рядом точек многоточием (т.е. тремя точками).
Для решения задачи будем использовать стандартные функции Паска-ля для работы со строками. Поскольку задача состоит из нескольких подза-дач для ее решения будем использовать функции пользователя.
6. Решение задачи № 2
6.1. Описание используемых переменных, обоснование выбора типа данных
s – строка вводимая пользвателем
sn – строка сформированная по условию одной из подзадач.
В программе использованы следующие функции:
Replace_Ch_By_Str(Str,s:string – функция замены символа группой символовж;
Replace_Group_By_Char – функция замены группы символов точкой;
Replace_Group_By_Str – функция замены символа группой символов.
6.2. Описание алгоритма
Алгоритм решения задачи представлен блок-схемой приведенной на рисунке 6.
Рис.6. Блок-схема решения задачи
6.3. Тестирование программы
Скриншоты тестирования программы приведены на рисунках 7 – 11.
Рис. 7. Случай одной точки
Рис. 8. Случай одного восклицательного знака
Рис. 9. Случай двух точек
Рис. 10. Случай трех точек
Рис. 11. Случай произвольной строки
7. Заключение по задаче № 2
Была написана программа на языке программирования PascalABC. После отладки было проведено тестирование, которое показало, что про-грамма работает верно.
Приложение 1. Листинг программы для решения задачи № 1
program Segments;
// программа определения общего пересечения всех заданных отрезков
uses CRT;
var
n:integer; // количество отрезков
i:integer; // счетчик цикла
a,b:real; // начало и конец текущего отрезка
max_a:real; // текущий самый наибольший левый конец отрезка
min_b:real; // текущий самый наименьший правый конец отрезка
begin
// ввод количества отрезков
repeat
writeln;
write(‘ Введите количество отрезков n=’);
readln(n);
// проверка корректности ввода
if n<2 then writeln (‘ n должно быть больше двух, повторите ввод!’); until n>2;
// ввод начала и конца очередного отрезка
repeat
writeln;
write(‘ Введите через пробел начало и конец 1-го отрезка a b=’);
readln(a,b);
// проверка корректности ввода
if a>=b then writeln(‘ a должно быть меньше b, повторите ввод!’);
until a<b;
// инициализация начальных значений max_a и min_b
max_a:=a;
min_b:=b;
for i:=2 to n do
begin
// ввод очередной пары значений начала и конца отрезка
repeat
write(‘ Введите через пробел начало и конец ‘, i,’-го отрезка a b=’);
readln(a,b)
until a<b; // присваивание текущего максимума для левых концов отрезка if (a>max_a) then max_a:=a;
// присваивание текущего минимума для правых концов отрезка
if (b<min_b) then min_b:=b;
end;
writeln;
// вывод найденного отрезка
if max_a writeln(‘ Пересечением этих отрезков является отрезок [‘,
max_a,’;’,min_b,’]’)
else
// печать сообщения об отсутствии общего пересечения
writeln(‘ Эти отрезки не пересекаются.’);
end.
Приложение 2. Листинг программы для решения задачи № 2
program Create_String;
// программа создания новых строк из заданной
uses
CRT;
function Replace_Ch_By_Ch(s:string; Ch_1,Ch_2:Char):string;
// процедура замены в строке символа Ch_1 на Ch_2
var
L,i:integer;
s1:string;
eq:boolean;
begin
s1:=s;
L:=length(s1);
for i:=1 to L do
begin
eq:=s1[i]=Ch_1;
if eq then s1[i]:=Ch_2;
end;
Replace_Ch_By_Ch:=s1;
end;
function Replace_Ch_By_Str(Str,s:string; Ch:Char):string;
// процедура замены символа группой символов
var
k:integer;
s1:string;
begin
s1:=s;
k:=1;
while(k<=length(s1)) do
begin
if s1[k]=Ch then
begin
Delete(s1,k,1);
insert(Str,s1,k);
k:=k+length(Str);
end
else
k:=k+1;
end;
Replace_Ch_By_Str:=s1;
end;
function Replace_Group_By_Char(s:string):string;
//функция замены группы символов точкой
var
s1:string;
begin
while pos(‘..’, s1) <> 0 do delete (s1, pos(‘..’, s), 1);
Replace_Group_By_Char:=s1;
end;
function Replace_Group_By_Str(Str,s:string; Ch:Char):string;
// процедура замены символа группой символов
var
k,pnts,m:integer;
s1:string;
begin
s1:=s;
k:=1;
while(k<=length(s1)) do
begin
if s1[k]=Ch then
begin
m:=k+1;
pnts:=1;
while (m<=length(s1)) and (s1[m]=Ch) do begin pnts:=pnts+1; m:=m+1; end; if pnts>1 then
begin
Delete(s1,k,pnts);
insert(Str,s1,k);
k:=k+length(Str)
end
else
k:=k+1;
end
else
k:=k+1;
end;
Replace_Group_By_Str:=s1;
end;
var s,sn : string;
begin
writeln(‘ Введите строку:’);
readln(s);
writeln(‘ Замена восклицательных знаков точками:’);
sn:=Replace_Ch_By_Str(‘.’,s,’!’);
writeln(sn);
writeln(‘ Замена точек многоточием:’);
sn:=Replace_Ch_By_Str(‘…’,s,’.’);
writeln(sn);
writeln(‘ Замена групп точек на точку:’);
// sn:=Replace_Group_By_Str(‘.’,s,’.’);
sn:=Replace_Group_By_Char(s);
writeln(sn);
writeln(‘ Замена групп точек на многоточие:’);
sn:=Replace_Group_By_Str(‘…’,s,’.’);
writeln(sn);
end.
Оставить комментарий
Inna Petrova 18 минут назад
Нужно пройти преддипломную практику у нескольких предметов написать введение и отчет по практике так де сдать 4 экзамена после практики
Иван, помощь с обучением 25 минут назад
Inna Petrova, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Коля 2 часа назад
Здравствуйте, сколько будет стоить данная работа и как заказать?
Иван, помощь с обучением 2 часа назад
Николай, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инкогнито 5 часов назад
Сделать презентацию и защитную речь к дипломной работе по теме: Источники права социального обеспечения. Сам диплом готов, пришлю его Вам по запросу!
Иван, помощь с обучением 6 часов назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Василий 12 часов назад
Здравствуйте. ищу экзаменационные билеты с ответами для прохождения вступительного теста по теме Общая социальная психология на магистратуру в Московский институт психоанализа.
Иван, помощь с обучением 12 часов назад
Василий, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Анна Михайловна 1 день назад
Нужно закрыть предмет «Микроэкономика» за сколько времени и за какую цену сделаете?
Иван, помощь с обучением 1 день назад
Анна Михайловна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Сергей 1 день назад
Здравствуйте. Нужен отчёт о прохождении практики, специальность Государственное и муниципальное управление. Планирую пройти практику в школе там, где работаю.
Иван, помощь с обучением 1 день назад
Сергей, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инна 1 день назад
Добрый день! Учусь на 2 курсе по специальности земельно-имущественные отношения. Нужен отчет по учебной практике. Подскажите, пожалуйста, стоимость и сроки выполнения?
Иван, помощь с обучением 1 день назад
Инна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Студент 2 дня назад
Здравствуйте, у меня сегодня начинается сессия, нужно будет ответить на вопросы по русскому и математике за определенное время онлайн. Сможете помочь? И сколько это будет стоить? Колледж КЭСИ, первый курс.
Иван, помощь с обучением 2 дня назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Ольга 2 дня назад
Требуется сделать практические задания по математике 40.02.01 Право и организация социального обеспечения семестр 2
Иван, помощь с обучением 2 дня назад
Ольга, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Вика 3 дня назад
сдача сессии по следующим предметам: Этика деловых отношений - Калашников В.Г. Управление соц. развитием организации- Пересада А. В. Документационное обеспечение управления - Рафикова В.М. Управление производительностью труда- Фаизова Э. Ф. Кадровый аудит- Рафикова В. М. Персональный брендинг - Фаизова Э. Ф. Эргономика труда- Калашников В. Г.
Иван, помощь с обучением 3 дня назад
Вика, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Игорь Валерьевич 3 дня назад
здравствуйте. помогите пройти итоговый тест по теме Обновление содержания образования: изменения организации и осуществления образовательной деятельности в соответствии с ФГОС НОО
Иван, помощь с обучением 3 дня назад
Игорь Валерьевич, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Вадим 4 дня назад
Пройти 7 тестов в личном кабинете. Сооружения и эксплуатация газонефтипровод и хранилищ
Иван, помощь с обучением 4 дня назад
Вадим, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Кирилл 4 дня назад
Здравствуйте! Нашел у вас на сайте задачу, какая мне необходима, можно узнать стоимость?
Иван, помощь с обучением 4 дня назад
Кирилл, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Oleg 4 дня назад
Требуется пройти задания первый семестр Специальность: 10.02.01 Организация и технология защиты информации. Химия сдана, история тоже. Сколько это будет стоить в комплексе и попредметно и сколько на это понадобится времени?
Иван, помощь с обучением 4 дня назад
Oleg, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Валерия 5 дней назад
ЗДРАВСТВУЙТЕ. СКАЖИТЕ МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ С ВЫПОЛНЕНИЕМ практики и ВКР по банку ВТБ. ответьте пожалуйста если можно побыстрее , а то просто уже вся на нервяке из-за этой учебы. и сколько это будет стоить?
Иван, помощь с обучением 5 дней назад
Валерия, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инкогнито 5 дней назад
Здравствуйте. Нужны ответы на вопросы для экзамена. Направление - Пожарная безопасность.
Иван, помощь с обучением 5 дней назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Иван неделю назад
Защита дипломной дистанционно, "Синергия", Направленность (профиль) Информационные системы и технологии, Бакалавр, тема: «Автоматизация приема и анализа заявок технической поддержки
Иван, помощь с обучением неделю назад
Иван, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Дарья неделю назад
Необходимо написать дипломную работу на тему: «Разработка проекта внедрения CRM-системы. + презентацию (слайды) для предзащиты ВКР. Презентация должна быть в формате PDF или формате файлов PowerPoint! Институт ТГУ Росдистант. Предыдущий исполнитель написал ВКР, но работа не прошла по антиплагиату. Предыдущий исполнитель пропал и не отвечает. Есть его работа, которую нужно исправить, либо переписать с нуля.
Иван, помощь с обучением неделю назад
Дарья, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru