1.6 Задание 6. Обработка текстовой информации
1.6.1 Цель работы
Научиться обрабатывать текстовую информацию.
1.6.2 Задача
Подсчитать число предложений, в которых заданное слово встречается минимальное число раз.
1.6.3 Решение
1. Проходимся по тексту 2 раз: 1- «запоминаем» концы предложения, 2 – запоминаем «координаты» слова.
2. Сравниваем.
1.6.4 Исходный код
function z=a6(x, sdf) %a- текст b-заданное слово
a=[];
for i=1:length(x)
if x(i)=='.' || x(i)=='!' || x(i)=='?'
a(end+1)=i;
end
end
b=strfind(x, sdf); %Координаты начала слов.
c(1:length(a))=0; %Массив с предложениями и кол-вом слов в каждом
ch=1;
for i=1:length(b) %Сравниваем координаты:
if b(i)<a(ch)
c(ch)=c(ch)+1;
end
if (i+1<=length(b)) && (b(i+1)>a(ch))
ch=ch+1;
end
end
sh=min(c);
lol=0;
for i=1:length(c) %Ищем число предложений
if c(i)==sh
lol=lol+1;
end
end
z=lol;
Однопроходный алгоритм:
function z=a6b(x, sdf)
% ИСХ: х - текст, sdf - заданное слово
% РЕЗ: z - число предложений
k=1; %Счетчик
m=[]; %Создаем массив, в котором будет хранится число слов в каждом предложении
while x>0
[a,x]=strtok(x,' '); %Делим предложение на слова, анализируем 1-ое слово
b=strfind(a, sdf);
if length(b)>0 %Если слово есть, то флагу присваиваем 1, иначе - 0.
q=1;
else
q=0;
end
if k>numel(m) %Если вышли за размеры(началось след. предложение), то создаем новый элемент.
m(k)=0;
end
m(k)=m(k)+q; %Прибавляем к элементу 1 или 0.
if a(end) == '!' || a(end) == '?' || a(end) == '.' %"Ищем" предложения
k=k+1;
end
end
ch=min(m); %Узнаем самое маленькое число повторений
pr=0;
for i=1:length(m) %Считаем число предложений с минимальным числом слов
if m(i)==ch
pr=pr+1;
end
end
z=pr; %Выводим число
1.6.5 Пример работы
1
2
Заключение
Таким образом, в ходе проделанной работы были изучены основы программирования в среде Matlab и выполнены следующие задачи:
программирование формул и построение по ним графиков;
вывод рекуррентной формулы, вычисление частичных сумм,
построение предельных графиков;
работа с одномерными массивами и выполнение различных операций над ними;
работа с двумерными массивами и матрицами и выполнение различных операций над ними;
работа со встроенными функциями Matlab
обработка и анализ текста;
В полном объеме выполнен типовой расчет по Языкам программирования за 1 курс.
В результате были получены следующие навыки:
Развитие алгоритмического мышления.
Опыт в программировании.
Список используемой литературы:
1) Конспекты лекций
2) А.Шень Программирование: теоремы и задачи 2-е изд., М.:МЦНМО, 2004
3) Методические указания по выполнению лабораторных работ. Информатика ( часть 3. №0902 Москва. 2009.)
4) Встроенная справочная служба в среду программирования Матлаб