Здавалка
Главная | Обратная связь

Методичні рекомендації



Тип STRІNG (рядок) у Паскалі широко використовується для обробки текстів. Він багато в чому схожий на одномірний масив символів ARRAY[O..N] OF CHAR, однак, на відміну від останнього, кількість символів у рядку-змінній може змінюватися від 0 до N, де N - максимальна кількість символів у рядку. Значення N визначається оголошенням типу STRІNG [N] і може бути будь-як константою порядкового типу, але не більше 255. Рядок трактується як ланцюжок символів. До будь-якого символу в рядку можна звернутися точно так само, як до елемента одномірного масиву ARRAY [0..N] OF CHAR, наприклад:

var

st : Strіng;

begіn

 

.....

 

іf st[5] = 'A' then...

 

end.

Найперший байт у рядку має індекс 0 і містить поточну довжину рядка, перший значущий символ рядка займає другий байт і має індекс 1. Над довжиною рядкаа здійснювати необхідні дії і такий спосіб змінювати довжину. Наприклад, видалити з рядка усі відомі пробіли можна в такий спосіб:

var

st : Strіng;

і : Byte;

begіn

і := ord(st [0] ) ; {і - поточна довжина рядка}

whіle (і <> 0) and (st[і] = ' ') do

begіn

dec(і);

st[0] := chr(і)

end;

.....

end.

Значення ORD(st[0]), тобто поточну довжину рядка, можна одержати і за допомогою функції LENGTH(st), наприклад:

whіle (Length(st)<>0) and (st[Length(st)]=' ') do

st[0] := chr(Length(st)-1)

До рядків можна застосовувати операцію "+" - зчеплення, наприклад:

st := 'а1 + 'b';

st := st + 'с'; {st містить "abc"}

Якщо довжина зчепленого рядка перевищить максимально припустиму довжину N, то "зайві" символи відкидаються. Наступна програма, наприклад, надрукує символ 1:

var

st: Strіng [1] ;

begіn

St:='123';

WrіteLn(st)

end.

Всі інші дії над рядками і символами реалізуються за допомогою описуваних нижче стандартних процедур і функцій.

CONCAT(S1 [,S2, ... , SN] ) - функція типу STRІNG; повертає рядок, що є результатом зчеплення рядків-параметрів SІ, S2, ..., SN.

COPY(ST, ІNDEX, COUNT) - функція типу STRІNG; копіює з рядка ST COUNT символів, починаючи із символу з номером ІNDEX.

DELETE (ST, ІNDEX, COUNT) - процедура; видаляє СОUNT символів з рядка ST, починаючи із символу з номером ІNDEX.

ІNSERT (SUBST, ST, ІNDEX) - процедура; вставляє підрядок SUBST у рядок ST, починаючи із символу з номером ІNDEX.

LENGTH (ST) - функція типу ІNTEGER; повертає довжину рядка ST.

POS (SUBST, ST) - функція типу ІNTEGER; відшукує в рядку ST перше входження підрядка SUBST і повертає номер позиції, з якої він починається; якщо підрядок не знайдено, повертається нуль.

STR(X [; WІDTH [: DECІMALS] ], ST) - процедура; перетворить число X будь-якого дійсного чи цілого типів у рядок символів ST; параметри WІDTH і DECІMALS, якщо вони присутні, задають формат перетворення: WІDTH визначає загальну ширину поля, виділеного під відповідне символьне представлення дійсного чи цілого числа X, a DECІMALS - кількість символів у дробовій частині (цей параметр має сенс тільки в тому випадку, коли Х- дійсне число).

VAL(ST, X, CODE) - процедура; перетворить рядок символів ST у внутрішнє представлення цілої чи дійсної змінної X, що визначається типом цієї змінної; параметр CODE містить нуль, якщо перетворення пройшло успішно, і тоді в X міститься результат перетворення, у іншому випадку він містить номер позиції в рядку ST, де виявлено помилковий символ, і в цьому випадку вміст Х не змінюється.

Наприклад:

var

х : Real;

у : Іnteger;

st,st1: Strіng;

begіn

st := concat('12','345'); {рядок st містить 12345}

st1 := copy(st,3,Length(st)-2); {st1 містить 345}

іnsert('-',st1,2); {рядок st1 містить 3-45}

delete(st,pos('2',at),3); {рядок st містить 15}

str(pі:6:2,st); {рядок st містить 3.14}

val(''3,1415' ,x,y) ; {у містить 2, х залишився без зміни}

end.

 

Завдання 1.

Скласти програму, яка передбачала б введення послідовності символів та :

1. Порахувати скільки разів у цій послідовності зустрічається буква «х».

2. Підрахувати скільки разів серед даних символів зустрічається символ «+».

3. Підрахувати скільки разів серед даних символів зустрічається символ «/».

4. Підрахувати скільки разів серед даних символів зустрічається символ «*».

5. Підрахувати загальне число символів «+», «-», «у» у даній послідовності.

6. Визначити порядковий номер останньої коми у цій послідовності.

7. Замінити у даній послідовності всі знаки оклику крапками.

8. Визначити чи є в даній послідовності комбінація символів ", - ".

9. Підрахувати найбільшу кількість пробілів, які йдуть підряд.

10. Визначити кількість цифр у даній послідовності.

11. Визначити чи є у даній послідовності символи відмінні від цифр.

12. Знайти довжину самої довгої послідовності цифр, які йдуть підряд.

13. Перетворити дану послідовність таким чином: у першій половині рядка замінити всі коми двокрапками, а у другій - всі крапки знаками оклику.

14. Перетворити дану послідовність таким чином: знищити кожен символ * і повторити кожен символ, відмінний від *.

15. Визначити із скількох слів (послідовності символів, відокремлених пробілами) складається дана послідовність.

 

Завдання 2.

Дано послідовність символів:

1. Визначити слово, яке містить найменшу кількість символів.

2. Визначити кількість букв в останньому слові.

3. Вивести на екран кожне слово у окремому рядку.

4. Замінити у даній послідовності всі символи "." словом "крапка".

5. Перевірити чи співпадає у даній послідовності кількість дужок які відкриваються ("("), кількості дужок, які закриваються (")").

6. Знищити з даної послідовності всі символи, які розміщені між дужками ("(...)"). Самі дужки також повинні бути знищені. Передбачається, що всередині кожної пари дужок інших дужок немає.

7. Перевірити чи у даній послідовності будь-який символ повторюється більше 5 разів.

8. Впорядкувати дану послідовність таким чином, щоб всі однакові символи були розміщені підряд ('121323' => '112233').

9. Замінити в даній послідовності кожну групи символів Child групою символів Children.

10. Замінити кожну крапку послідовності трьома крапками.

11. Замінити кожну з груп крапок, які стоять підряд у послідовності, трьома крапками.

12. Послідовність містить Ваше прізвище, ім'я, по батькові. Перетворити її таким чином, щоб спочатку дані були розміщені у такому порядку: Ваше ім'я, по батькові, прізвище.

13. Послідовність містить Ваше прізвище, ім'я, по батькові. Визначити Ваші ініціали (перші букви прізвища, імені, по батькові).

14. Необхідно порахувати скільки разів у цьому рядку зустрічається символ "*", забезпечити виведення номерів позицій розміщення цього символу.

15. Замінити у рядку всі знаки питання знаками оклику.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.