lab5_v17 / lab5_v17
.docx
Федеральное агентство по образованию
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
ОТЧЕТ
по лабораторной работе № 5
по дисциплине «Программирование на языке высокого уровня»
Выполнил: студент гр. З-431-а
Мамаев Александр Николаевич
Принял: преподаватель
Сафьянова Елена Николаевна
«20» января 2016 г.
2016 г.
-
Тема работы: строковый тип данных.
-
Цель работы – приобретение навыков работы со строками.
-
Задание (вариант №17):
Дано натуральное число n и последовательность символов S1, …, Sn (строка). Найти длину самого короткого слова в строке (слова – группы символов, разделенные одним или несколькими пробелами).
-
Описание алгоритма решения задачи:
При работе со строками многие задачи зачастую не удаётся решить стандартными функциями языка разработки. В связи с этим не редко применяются циклы и условные операторы.
В данной задаче, получив пользовательский ввод данных с клавиатуры (исходную строку), определяется её длина n. Затем используя цикл for производиться полный «проход» по строке от первого символа до n. С целью определения самого короткого слова в строке вводится две переменных: tmpcnt и cnt, которые служат для хранения длины текущего слова и самого короткого соответственно.
При каждом не пробельном символе переменная текущего слова tmpcnt увеличивается. В случае появления пробела, если было завершено хоть одно слово(tmpcnt>0) и оно самое первое слово в строке (cnt=0) или является более коротким, чем предыдущие tmpcnt<=tmp, то переменной cnt присваивается значение текущего слова tmpcnt. Для перехода к следующему слову переменная текущего слова tmpcnt обнуляется, затем происходит переход к следующему символу.
-
Листинг программы
-
program lab5_v17;
-
uses Crt;
-
var
-
s:string;
-
tmpcnt,cnt,i,n:integer;
-
begin
-
ClrScr;
-
write('Введите строку: ');
-
readln(s);
-
n:=Length(s);
-
-
tmpcnt:=0; // Длина текущего слова
-
cnt:=0; // Длина самого короткого слова
-
for i:=1 to n do begin
-
-
if(s[i]=' ') then begin
-
if(((tmpcnt<=cnt) or (cnt=0)) and (tmpcnt>0)) then cnt:=tmpcnt;
-
tmpcnt:=0;
-
continue;
-
end;
-
-
Inc(tmpcnt);
-
end;
-
-
writeln('Длина самого короткого слова: ',cnt);
-
-
readln;
-
end.
-
Результаты тестирования программы
При одиночных пробелах
При повторяющихся пробелах
-
Выводы
Необходимые навыки работы со строками приобретены.
-
Список используемых источников
• Методические указания к лабораторным работам для студентов специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем», С.М. Алферов, Е.Н. Сафьянова
• http://highlight.hohli.com/