|
|||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Основні алгоритми роботи з літерними величинамиДля обробки літерних величин існує ряд основних алгоритмів, які входять до складу інших алгоритмів роботи з текстом. Наведемо деякі з них: 1)підрахунок заданого символа в тексті; 2)заміна одного символа на інший; 3)викреслювання заданого символа з тексту; 4)заміна букви буквосполученням; 5)переворот тексту; 6)підрахунок заданого буквосполучення в слові; 7)пошук заданого символа в тексті; 8)пошук у тексті символів, що позначають розділові знаки.
Мовою Паскаль функції мають вигляд
Розв’язання мовою Паскаль:
Мовою Паскаль розв’язання мають вигляд:
Зверніть увагу, що оскільки вихідний рядок не змінюється в результаті роботи програми, можна використовувати цикл for, але кінцеве значення лічильника не повинно перевищувати різницю між довжиною даного рядка та шуканого плюс 1. ЯКЩО ШУКАНИЙ РЯДОК МАЄ ДОВЖИНУ, БІЛЬШУ ВІД ЗАДАНОГО, РІЗНИЦЯ ДОВЖИН БУДЕ ВІД’ЄМНОЮ І ЦИКЛ for НЕ СПРАЦЮЄ. ЦЕ ДОЗВОЛЯЄ НЕ ВИКОРИСТОВУВАТИ КОМАНДУ if, ЯК У МОВІ НАМ!
7) Пошук заданого символа в тексті: Т – заданий рядок. S – шуканий символ АЛГ ціл poisks (літ T, s) ПОЧ ціл і, р dlt:=довжин(Т) р:=0 поки та р=0 пц якщо T[i, 1]=s то р:=1 інакше і:=і+1 Все кц poisks:=p КІН
Оскільки при виконанні пошуку заданого елемента в тексті, знайшовши елемент, не має сенсу продовжувати пошук, використовуємо цикл while. Закінчуємо роботу циклу, коли закінчиться рядоу або буде знайдено шуканий елемент.
ОСКІЛЬКИ ФУНКЦІЄЮ copy МОЖНА ВИДІЛИТИ НЕ ОБОВ’ЯЗКОВО ОДИН СИМВОЛ, ТО ЗАПРОПОНОВАНА ФУНКЦІЯ МОЖЕ ЗНАХОДИТИ У РЯДКУ НЕ ТІЛЬКИ ОДИН СИМВОЛ, А Й БУДЬ-ЯКУ ЗАДАНУ ПОСЛІДОВНІСТЬ СИМВОЛІВ!
Function Search (S, BS: string): boolean; var dl, i: byte; Begin i:=1; dl:=length(S) – length(BS)+1; while (i<=dl) and (copy (S, i, length(BS))<>BS) do i:=i+1; if i>dl then Search:= false else Search:= true; end;
Найчастіше цю функцію використовують, коли із знайденим елементом необхідно щось зробити, а тому зручно значення, що повертається, зробити логічного (boolean) типу. Тоді функція повертає true, якщо елемент знайдено, і false – в протилежному випадку. Останнє розгалуження в тілі функції пояснюється таким чином: якщо цикл while закінчився завдяки першій умові (і перевищило значення dl), шуканий елемент не знайдено, у протилежному випадку – знайдено. Використовуючи запропоновану функцію, можна розв’язати складнішу задачу: пошук у тексті розділових знаків, що зберігаються у рядку R. Function Rozd (S: string): boolean; var j: byte; p: boolean; R: string; Begin R:=’., 1:;!?-‘; p:= true; j:=1; while p and (j<=length(R)) do Begin p:=search (S, R[j]); j:=j+1; end; Rozd:=p; end;
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |