Опис алгоритму функції substr_mas()

 

Функція substr_mas виконує поставлене завдання методом масивів. Її параметри: — src і dest — вхідний і вихідний рядки відповідно, представлені у вигляді масивів ss[N] та dd[N], які функція отримує з головної програми. Внутрішні змінні i та j використовуються як індекси в масивах.

Функція перевіряє значення параметрів у відповідності з випадком 4, якщо умови цього випадку виявлені, у перший елемент масиву dest записується ознака кінця рядку і функція повертає 0.

Якщо випадок 4 не виявлений, функція переглядає num перших символів вхідного рядку. Якщо при цьому буде знайдена ознака кінця рядку, це - випадок 3, при цьому в перший елемент масиву dest записується ознака кінця рядку й функція повертає 0.

Якщо ознака кінця в перших num символах не знайдена, виконується цикл, у якому індекс вхідного масиву починає мінятися від 1, а індекс вихідного - від 0. У кожній ітерації цього циклу один елемент вхідного масиву пересилається у вихідний. Якщо пересланий елемент є ознакою кінця рядку (випадок 2), то функція негайно закінчується, повертаючи 1. Якщо в циклі не зустрінеться кінець рядку, цикл завершиться після len ітерацій. У цьому випадку в кінець вихідного рядкаузаписується ознака кінця і функція повертає 1. Схема алгоритму функції substr_mas наведена у додатку К.

 

Опис алгоритму функції substr_ ptr ()

Функція substr_ptr виконує поставлене завдання методом вказівників. Її параметри: — src і dest — вхідний і вихідний рядки відповідно, представлені у вигляді вказівників на початки цих рядків.

Функція перевіряє значення параметрів у відповідності з випадком 4, якщо умови цього випадку виявлені, за адресою, що задає dest, записується ознака кінця рядку і функція повертає 0, ці дії виконуються одним оператором.

Якщо випадок 4 не виявлений, функція пропускає num перших символів вхідного рядка. Це зроблено циклом while, умовою виходу з якого є зменшення лічильника num до 0 або поява ознаки кінця вхідного рядка. Важливо чітко представляти порядок операцій, які виконуються в цьому циклі:

o вибирається лічильник num;

o лічильник num зменшується на 1;

o якщо обране значення лічильника було 0 - цикл завершується;

o якщо обране значення було не 0 — вибирається символ, на який указує вказівник src;

o вказівник src збільшується на 1;

o якщо обране значення символу було 0, тобто ознака кінця рядка, цикл завершується, інакше - повторюється.

 

Після виходу із циклу перевіряється значення *src:: якщо воно не 0, це означає, що вихід із циклу відбувся за ознакою нульового значення лічильника num (випадок 3), і за адресою, що задає dest, записується ознака кінця рядку, функція повертає 0.

Якщо ознака кінця не знайдена, виконується цикл, подібний до першого циклу while, але за значенням лічильника len. У кожній ітерації цього циклу символ, на який вказує src переписується за адресою, що задається dest, після чого обидва вказівники збільшуються на 1. Цикл закінчиться, коли буде переписано len символів або зустрінеться ознака кінця рядку. У будь-якому варіанті завершення циклу по поточній адресі, що міститься у вказівнику dest, записується ознака кінця рядку і функція завершується, повертаючи 1.

Лістингифункцій substr_mas та substr_ptr наведені у додатку Л.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: