У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - Паскаль: масиви
23
змінній-рядку. Його символи присвоюються елементам змінної, починаючи з першого. Якщо довжина значення більша максимально можливої довжини n змінної, то присвоюються лише n перших символів. При цьому довжина значення (або n) неявно присвоюється додатковому компоненту змінної-рядка (як символ нульовому елементу масиву). Наприклад, нехай змінна s означена як string[3]. Після присвоювання

s:='12345'

чотири її компоненти з індексами 0, 1, 2, 3 матимуть значення chr(3), '1', '2', '3', а після

s:='12'–

chr(2), '1', '2', а останній компонент буде недоступним, і його значення буде "сміттям". За останнього значення змінної s виконання оператора

s:=s+'9'

надасть їй значення '129', а оператора

s:='9'+s–

значення '912'. В обох випадках s[0]=chr(3). Після присвоювання s:='' змінна s подає порожній рядок: s[0]=chr(0), а решта елементів недоступні.

Змінити довжину значення можна явно, змінивши нульовий символ. Якщо після s:='' виконати s[0]:=2, то значення компонентів із індексами 1 і 2 зі "сміття" перетворяться на значення-рядок. Присвоювання іншим елементам рядка не змінює довжини його значення.

У типах рядків означено операції порівняння =, <>, <, … . За означенням, рядки рівні, якщо мають ту саму довжину, і в її межах відповідні символи однакові. У противному разі вони не рівні. Упорядкування рядків залежить від системи програмування.

У мові Турбо Паскаль, якщо length(s1)<length(s2), то рядок s1 менше рядка s2, тобто s1<s2 – істина. За рівних довжин рядки порівнюються в лексикографічному порядку, тобто s1<s2 тоді, коли існує таке i, що 1? і? length(s1), за якого s1[i]<s2[i], а всі відповідні елементи з меншими номерами рівні між собою. Як бачимо, упорядкування рядків у Турбо Паскаль відрізняється від лексикографічного.

У системі програмування Турбо Паскаль означено також багато корисних підпрограм обробки рядків. Розглянемо лише чотири з них.

Функція з заголовком

function copy ( s : string; ind, cnt : byte ) : string

задає повернення підрядка рядка s, що починається з s[ind] і має довжину cnt. Наприклад, copy('abcd', 2, 2)='bc'.

Функція з заголовком

function pos ( subs, s : string ) : byte

задає повернення номера того елемента в рядку s, починаючи з якого subs входить у s як підрядок (якщо не входить, то повертається 0). Наприклад, pos('bc', 'abcd')=2, pos('aa', 'abcd')=0.

Процедура з заголовком

procedure val(s : string, var v; var ErrCode : integer)

задає перетворення зображення числа в рядку s у числовий тип і присвоювання його змінній v. Якщо перетворення дійсно можливе, то значенням ErrCode буде 0. У противному разі її значенням буде позиція з символом у рядку, починаючи з якого перетворення неможливе. Тип аргументу, відповідного параметрові v, повинен мати тип, відповідний змісту рядка s. Так само зміст рядка повинен задавати число, представне в типі цього аргументу. Наприклад, за s='1.3' або s='1E2' другий аргумент повинен бути дійсного типу, а не цілого. Аналогічно за його типу integer у рядка не повинно бути значень, що подають числа, більші 32767 або менші -32768.

Процедура з заголовком

procedure delete(var s : string; start, len : integer)

задає знищення len символів, починаючи з позиції start у рядку s. Наприклад, за s='abcdef' після виклику delete(s, 3, 3) рядок s матиме значення 'abf'. За start=0 або len=0 або start>length(s) рядок не змінюється. За start+len>length(s) з s вилучається підрядок до кінця рядка.

Задачі

10.* Що друкується в результаті виконання програми:

а) program strconc ( input, output );

var a: integer; c: char; s: string;

begin

s :='';

for a := 0 to 2 do

begin

c := chr ( ord ( '0' ) + a ); s := c + s + c; writeln ( s )

end

end.

б) program concstr ( input, output );

var a: integer; c: char; s: string;

begin

s :=''; c:= chr ( 47 );

while length ( s ) < 7 do

begin

c := succ ( c ); s := s + c + s; writeln ( s )

end

end.

11. Застосовуючи операцію "+", функцію length та подання рядка масивом із додатковою змінною, що задає довжину рядка, написати модуль із такими підпрограмами обробки рядків:

1)* функції eq, ne, lt, le, gt, ge лексикографічного порівняння пари рядків відповідно на =, <>, <, <=, >, >=;

2) процедура addsym вставлення символу в указане місце рядка зі збільшенням його довжини на 1(якщо збільшення неможливе, то останній символ "витісняється");

3)* процедура delsym вилучення символу з указаним номером із рядка зі зменшенням його довжини на 1;

4)* функція substr повернення підрядка даного рядка, що починається в ньому з заданого місця та має задану довжину;

5) процедура delete вилучення з рядка його підрядка, що починається в ньому з заданого місця та має задану довжину.

12. Натуральне число в десятковому вигляді подано рядком, довжина якого не більша 80. Написати функцію перевірки ознаки подільності числа на:

а) 5; б) 4; в) 3; г) 11.

13. Номер із контрольним розрядом є зображенням числа, перша цифра якого 1, а остання є остачею від ділення на 10 суми значень цифр із другої до передостанньої включно (контрольний розряд).

Написати модуль, в якому перша функція задає побудову відповідного номера з контрольним розрядом із 10 цифр за натуральним числом, а друга – перевірку, чи є послідовність із 10 цифр правильним номером із контрольним розрядом.

14. Нехай рядкове подання цілого невід'ємного числа в десятковій системі починається з будь-якої цифри, крім '0' (за винятком числа 0), у вісімковій – починається символом '0', у шістнадцятковій – символами '0x', у двійковій – символами '0b'. Далі записано цифри відповідної системи числення. У записі від'ємного числа


Сторінки: 1 2 3 4 5 6