
- •2.2 Операції над string-даними
- •Змінна s3 набуде значення ‘Одеса – місто-герой’.
- •2.3 Основні функції для роботи зі string-даними
- •2.4 Стандартні процедури для роботи з даними рядкового типу
- •1) Delete – вилучення підпослідовності з заданої послідовністі:
- •Вилучає зі string-змінної s задану кількість n символів, починаючи з символу, який стоїть в s у заданій позиції k. Після вилучення довжина s зменшується на n символів.
- •3 Приклади програм
- •3.1Приклад1
- •3.2 Приклад 2
- •Текст програми:
- •3.3 Приклад 3
- •4 Контрольні запитання
- •5 Лабораторне завдання
- •Варіанти завдань до роботи на комп’ютері
3 Приклади програм
3.1Приклад1
Завдання. Написати проект програми, що вводить три string-рядки з 20-ти або меншого числа елементів і визначає однакові символии між кожною парою рядків та однакові символи з усіх трьох рядків.
Форму проекту та результати роботи програми наведено на рис.8.2.
Рисунок 8.2 – Форма проекту прикладу 1
Текст програми:
………………….
implementation
{$R *.DFM}
Type tstr=string[20];
// підпрограма визначення однакових символів поміж двох рядків
procedure Spsimv(s1,s2:tstr;var s:tstr);
var i,dlina,po,ps:integer;
begin
s:='';
dlina:=length(s1);
for i:=1 to dlina do
begin
ps:=pos(s1[i],s2);
if ps<>0 then
begin
po:=pos(s1[i],s);
if po=0 then s:=s+s1[i];
end;
end;
end;
// підпрограмма до кнопки “Старт”
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2,s3,s12,s13,s23,s123:tstr;
begin
// введення значень рядків
s1:=edit1.text;
s2:=edit2.text;
s3:=edit3.text;
// визначення однакових символів поміж кожною парою рядків
Spsimv(s1,s2,s12); edit4.text:=s12;
Spsimv(s1,s3,s13); edit5.text:=s13;
Spsimv(s2,s3,s23); edit6.text:=s23;
// визначення однакових символів у трьох рядках
Spsimv(s12,s23,s123); edit7.text:=s123;
end;
……….
end.
3.2 Приклад 2
Завдання. Ввести рядок зі значеннями кількості доларів (через прогалину). Вивести у компонент Memo масив відповідних значень у гривнях.
Форму проекту та результати роботи програми наведено на рис.8.3.
Текст програми:
unit Unit1;
……..
implementation
{$R *.DFM}
Type s60=string[60];
// підпрограма-функція вилучення початкових прогалин рядка
function del_n(s1:s60):s60;
begin
while (pos(' ',s1)=1)and (length(s1)>0) do
delete(s1,1,1);
del_n:=s1;
end;
// підпрограма-функція виокремлення першого” слова” з послідовності
function slovo(s:s60):s60;
var p:integer;
begin
p:=pos(' ',s);
if p=0 then slovo:= s
else slovo:= copy(s,1,p-1) ;
end;
// підпрограма-процедура переведення “слова” з доларів у гривні
procedure dol_gr(sdol:s60; koef:real; var sgr:s60);
var dol,gr:real; ier:integer;
begin
delete(sdol,1,1); // вилучення символу ‘ $’
val(sdol,dol,ier); // переведення рядкового значення в числове
gr:=dol*koef; // перерахунок числового значення в гривні
str(gr:10:2,sgr); // перетворення числового значення в рядкове
sgr:=sgr+' грн.';
end;
// підпрограма до кнопки “Перерахунок у гривню“
procedure TForm1.Button1Click(Sender: TObject);
var sv,sr,sg:s60; k,dd:integer;
begin sv:=edit1.text; //читання введеного рядка
k:=strtofloat(Edit2.text); // читання курсу долару
sv:=del_n(sv); // вилучення початкових прогалин рядка
while length(sv)>0 do
begin
sr:=slovo(sv); // виокремлення першого “слова” з послідовності
dol_gr(sr,k,sg); // переведення “слова” з доларів у гривні
memo1.lines.add(sg); // виведення результату
delete(sv,1,length(sr)); //вилучення першого “слова” з послідовності
sv:=del_n(sv); // вилучення початкових прогалин рядка
end;
end;
end.