5.88. Скласти алгоритм підрахунку загального числа входжень символів '+', '-', '*' у рядок А.
5.89. Скласти алгоритм перетворення рядка А, замінивши у ньому всі знаки оклику '!' крапками '.', кожну крапку – трьома крапками '...', кожну зірочку '*'- знаком '+'.
5.90. Інверсія рядка A - це рядок B, записаний тими ж символами у зворотньому порядку. Інверсія порожнього рядка за означенням – порожній рядок. Побудувати інверсію рядка.
5.91. Рядок називається симетричним, якщо його символи, рівновіддалені від початку та кінця рядка, співпадають. Порожній рядок вважається симетричним. Перевірити рядок A на симетричність.
5.92. Скласти алгоритм видалення із рядка А всіх входжень заданої групи символів.
5.93. Скласти алгоритм перетворення слова А, видаливши у ньому кожний символ '*' та подвоївши кожний символ, відмінний від '*'.
5.94. Скласти алгоритм підрахунку найбільшої кількості цифр, що йдуть підряд, у рядку А.
5.95. Скласти алгоритм підрахунку числа входжень у рядок А заданої послідовності літер.
5.96. Скласти алгоритм, який за рядком А та символом S будує новий рядок, отриманий заміною кожного символу, слідуючого за S, заданим символом С.
5.97. Cкласти алгоритм перетворення рядка А видаленням із нього всіх ком, які передують першій крапці, та заміною у ньому знаком '+' усіх цифр '3', які зустрічаються після першої крапки.
5.98. Cкласти алгоритм виведення на друк усіх цифр, які входять в заданий рядок, та окремо - решту символів, зберігаючи при цьому взаємне розташування символів у кожній з цих двох груп.
5.99. Рядок називається монотонним, якщо він складається з зростаючої або спадної послідовності символів. Cкласти алгоритм перевірки монотонності рядка.
5.100. Cкласти алгоритм обчислення числа входжень у рядок А символів, перелічених у рядку V.
Знайти символ, кількість входжень якого у рядок A
а) максимальна;
б) мінімальна.
5.101. Виділити з рядка A найбільший підрядок, перший і останній символи якого співпадають.
5.102. Перевірити, чи складається рядок з
а) 2 симетричних підрядків;
б) n симетричних підрядків.
5.103. Видалити з рядка всі повторні входження символів.
5.104. Виділити з рядка найбільший монотонний підрядок, коди послідовних символів якого відрізняються на 1.
5.105. Замінити всі пари однакових символів рядка, які йдуть підряд, одним символом. Наприклад, рядок ‘aabcbb’ перетворюється у ‘abcb’.
5.106. Побудувати рядок S з рядків S1, S2 так, щоб у S входили
а) ті символи S1, які не входять у S2;
а) всі символи S1, які не входять у S2, та всі символи S2, які не входять у S1.
5.107. Видалити з рядка симетричні початок та кінець. Наприклад, рядок ‘abcdefba’ перетворюється у ‘cdef’.
5.108. Cкласти алгоритм виведення на друк тільки маленьких літер українського алфавіту, які входять в заданий рядок.
Розвязок. Наступний символ рядка виводиться на друк, якщо він співпадає з одним з символів слова V - послідовності всіх маленьких літер українського алфавіту.
Алг Ukr_lit це
змін c,d:симв;
A,P,V:рядок;
q:бул;
поч
взяти(A);
V¬ 'абвгдеєжзіийклмнопрстуфхцчшщьюя';
поки len(A)>0 повт
P¬V; c¬hd(A);
повт
q¬c=hd(P); P¬tl(P);
до qÚ(len(P)=0);
якщо q то показати(с) кр;
A¬tl(A)
кц;
ка.
5.109. Скласти алгоритм виведення на друк рядка А, складенного з маленьких літер українського алфавіту, відповідними великими літерами.
5.110. Заданий рядок, який складається з великих літер українського алфавіту. Скласти алгоритм перевірки впорядкованості цих літер за алфавітом.
5.111. Скласти алгоритм виведення на друк в алфавітному порядку усіх різних маленьких українських літер, які входять до даного рядка.
5.112. Словами називаються підрядки, які розділені одним чи кількома пропусками та не містять пропусків всередині себе. За рядком A скласти алгоритм виведення на друк:
а) всіх слів рядка у зворотньому порядку;
б) усіх слів, які зустрічаються у рядку по одному разу;
в) цього ж рядка, але з видаленням з нього повторних входжень слів.
5.113. Знайти
а) найкоротше слово рядка;
б) найдовше слово рядка;
5.114. Використовуючи операції роботи з рядками, скласти алгоритми, які реалізують наступні дії:
а) знищення n символів рядка S, починаючи з позиції k;
б) вставка рядка А у рядок В, починаючи з позиції k;
в) виділення із рядка S підрядка R довжиною n символів, починаючи з позиції k;
г) перетворення дійсного числа d у рядок S;
д) перетворення рядка S у дійсне число d з кодом перетворення і: і=0 у випадку успішного перетворення або і дорівнює номеру першого помилкового символу рядка;
е) виділення з рядка А підрядка довжиною n символів, починаючи з кінця рядка.
Зауваження. Задачі 5.53 – 5.71 з підрозділу "Символьний тип даних" (5.4) можуть бути сформульовані у термінах рядків і запропоновані для розв'язання у даному підрозділі. Тоді в умовах задач замість “текст” або “послідовність символів” слід читати “рядок”. Так, наприклад, алгоритм розв'язку задачі 5.59 може бути складено наступним чином:
Алг Del_scob це
змін d:симв;
A,S:рядок;
поч
взяти(A); S¬' ';
поки len(A)>0 повт
d¬hd(A);
якщо d='(' то
повт
A¬tl(A)
до hd(A)=')'
кц
інакше S¬app(S,d)
кр;
A¬tl(A)
кц;
показати(S)
ка.
Немає коментарів:
Дописати коментар