Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Порівняння рядків

Читайте также:
  1. Вставте у документ таблицю розмірністю 5х6 (5 стовпців, 6 рядків), залишивши порожнім перший рядок.
  2. Завдання на порівняння
  3. Завдання на порівняння
  4. Завдання на порівняння
  5. Загальний образ розвитку української преси під Росією в 1905–1914 рр. Порівняння з пресою інших народів
  6. Тема. Число і цифра 6. Написання цифри 6. Порівняння чисел у межах 6. Складання й читання прикладів на додавання за предметними малюнками
  7. Тема. Число і цифра 7. Написання цифри 7. Порівняння чисел у межах 7. Послідовність чисел у межах 7. Складання й розв’язання прикладів
  8. Тест-завдання зі складним множинним вибором, побудовані за принципом порівняння і протиставлення
  9. Тест-завдання зі складним множинним вибором, побудовані за принципом порівняння і протиставлення

 

Довільні два рядки можна порівнювати один з одним за допомогою операцій відношення (=, <>, <, >, <=, =>). Порівняння рядків відбувається зліва направо, до першого відмінного символу. Два рядки рівні, якщо вони мають однакову довжину і складаються з однакових символів, що йдуть в одному порядку. Меншим буде той рядок, в якому перший символ, що не збігається має менший порядковий номер у таблиці АSCII. Якщо рядки мають різну довжину, але в спільній частині збігаються, то меншим вважається коротший рядок. Наступні операції порівняння повертають результат TRUE.

‘Tommy’>’Harry’

‘France’= ‘France’

‘king ‘ <’kingdom’

‘Miscount’<=’Misquote’

Порівняння може дати на перший погляд несподівані результати, якщо у двох рядках перемішані маленькі і великі літери. Як пам’ятаєте маленькі літери мають більші порядкові номери у таблиці АSCII, ніж великі, тому рядок ‘рascal’ більший за рядок ‘Pascal’, який в свою чергу більший за рядок ’PASCAL’.

Несподівані результати можуть бути отримані, якщо у двох рядках присутні цифрові символи. В зв’язку з тим, що порівняння відбувається у “ словарному стилі “, не слід чекати що порівняння рядків буде відповідати поняттям порівняння чисел. Наприклад, не дивлячись на те, що 300 більше за 32, рядок ’300 ’ менший за рядок ’32’, в зв’язку з тим, що ’2’ більше за ’0’.

 

Приклад 17.1. Задано текст, який складають слова, які відокремлені одне від одного комами, а за останнім крапка. Визначити та надрукувати слова, у яких попереднє слово коротше та наступне довше за дане.

Program words_short_long;{}

var s:array[1..30] of string[11];

st:string; k,ks:integer; i:byte; f2,f1:text;

begin assign(f1,'strdlina.dat'); reset(f1);

assign(f2,'strdlinr.pas'); rewrite(f2);

readln(f1,st); {1 - введення рядка даних}

writeln(f2,st); i:=1; {2 – виведення рядка даних у файл результатів}

while length(st)<>0 do {3 – поки не всі слова прочитані}

begin k:=pos(',',st); {4 – відшукуємо позицію коми}

if k=0 then k:=pos('.',st); {5 – або позицію крапки}

s[i]:=copy(st,1,k-1);{6 – копіюємо слово без коми}

delete(st,1,k);i:=i+1;{7 – видаляємо поточне слово і збільшуємо значення лічильника на одиницю}

end; writeln(f2,'a) result');

ks:=i-1;{8 - запам'ятовуємо кількість слів тексту у змінній ks }

if ks>2 then for i:=2 to ks-1 do

begin if (length(s[i-1])<length(s[i])) and (length(s[i])<length(s[i+1])) then

write(f2,s[i],' ');{9 – якщо кількість слів у тексті більша за 2, порівнюємо довжину поточного слова з довжиною попереднього та наступного слів і запам'ятовуємо кількість відповідних умові слів }

end; writeln(f2); close(f2); End.

 

Заданий текст

nose,flesh,protest,objection,gallant,keel,nostril,publisher,justification.

a) Result

flesh protest nostril publisher

 

Приклад 17.2а. Задано текст, що складається із слів, які відокремлені одне від одного пробілами. Створити рядок, у якому ці слова будуть розташовані у зворотньому порядку.

Program reverse;

var f1:text; word,ost,nst:string; sym:integer;

begin assign(f1,'reversrr.pas'); rewrite(f1);

nst:=' '; read(ost); ost:=concat(ost,' ');

writeln(f1,'ost',ost);

while ost<>' ' do begin

sym:=pos(' ',ost); writeln(f1,'sym=',sym);

word:=copy(ost,1,sym); writeln(f1,'word=',word);

nst:=concat(word,nst); writeln(f1,'nst=',nst);

delete(ost,1,sym); writeln(f1,'ost=',ost); end;

writeln(f1); writeln(f1,'Print new string');

writeln(f1,'****************************************');

writeln (f1,nst);

writeln(f1,'****************************************');

close(f1); end.

Отримані результати мають вигляд:

ostqqq eee ttttt yyyyy aaaaa dddd

sym=4

word=qqq

nst=qqq

ost=eee ttttt yyyyy aaaaa dddd

sym=4

word=eee

nst=eee qqq

ost=ttttt yyyyy aaaaa dddd

sym=6

word=ttttt

nst=ttttt eee qqq

ost=yyyyy aaaaa dddd

sym=6

word=yyyyy

nst=yyyyy ttttt eee qqq

ost=aaaaa dddd

sym=6

word=aaaaa

nst=aaaaa yyyyy ttttt eee qqq

ost=dddd

sym=5

word=dddd

nst=dddd aaaaa yyyyy ttttt eee qqq

ost=

Print new string

****************************************

dddd aaaaa yyyyy ttttt eee qqq

****************************************

 

Приклад 17.2б. Задано текст, що складається із слів, які відокремлені одне від одного пробілами. Створити рядок, у якому ці слова будуть розташовані у зворотньому порядку. У цій програмі рядок слів записується у масив.

Program reverse;

var f,f1:text; word:array [1..6] of string; ost,nst:string;

sym,i:integer;

begin assign(f1,'reversr.pas'); rewrite(f1);

nst:=' '; read(ost); ost:=concat(ost,' ');

writeln(f1,ost); i:=1;

while ost<>' ' do

begin sym:=pos(' ',ost);

word[i]:=copy(ost,1,sym);

nst:=concat(word[i],nst);

delete(ost,1,sym); end;

writeln(f1); writeln(f1,'Print new string');

writeln(f1,'****************************************');

writeln (f1,nst);

writeln(f1,'****************************************');

close(f1); end.

Отримані результати мають вигляд:

ddd bbbbb ffffff aaaaaa zzzzzz

 

Print new string

****************************************

zzzzzz aaaaaa ffffff bbbbb ddd

****************************************

 

 

Приклад 17.3 Задано десять слів. Розташувати слова у алфавітному порядку.

program alfavit;

uses crt; {Розділ об’яв }

const lsize=10;

var dlina:1..lsize;

lines:array[1..lsize] of string;

sym,vlist:integer; f,f1:text;

begin clrscr; {Розділ інструкцій}

assign(f,'alfavit.dat'); reset(f);

assign(f1,'alfavitr.pas'); rewrite(f1);

writeln(f1,'danі');

for vlist:=1 to lsize do

begin readln(F,lines[vlist]);

writeln(f1,'lines=',lines[vlist]); end;

writeln(f1,'rezalt');

for vlist:=1 to lsize do

begin dlina:=1;

for sym:=2 to lsize do

if (lines[sym]<lines[dlina]) and (lines[sym]<>' ')

then dlina:=sym; writeln(f1,'lines=',lines[dlina]);

lines[dlina]:=' '; end; close(f1); end.

Отримані результати мають вигляд:

danі

zzzz mmmmmm ssssss aaa bbbb ccc ddddd eeeee ffffff gggg

result

aaa bbbb ccc ddddd eeeee ffffff gggg mmmmmm ssssss zzzz

 

 




Дата добавления: 2014-11-24; просмотров: 38 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав