Лабораторна робота з інформатики на тему Рядкові величини

Тема: Програмування процесів з рядковими величинами.

Мета: оволодіти практичними навиками роботи з рядковими даними. Обробка тексту.

Задачі для самостійної підготовки.

  • Вивчити
    • Способи роботи з символьними змінними і рядковими константами;
    • Стандартні процедури і функції для роботи з рядковими;
  • Порядок виконання роботи
    • Складіть програму розв’язку задачі
    • Протестуйте програму
  • Напишіть звіт по лабораторній роботі
  • Захист лабораторної роботи.
  • Приклад виконання роботи

Задача. Дано два слова. Визначте, чи можна скласти перше слово з букв другого, якщо     кожну букву другого слова можна використовувати лише один раз.

Приклад. Можна скласти: Мак – Максим

Неможна: Сорт – Максим

  1. Введем позначення
    Word1 — слово, яке складається з букв другого слова
    Word2– слово з букв якого складається слово Word1
    Word1 і Word2 – вводяться з клавіатури
    І – лічильник циклу
    Т – текст, що отримався в результаті.
  2. Пояснення алгоритму розв’язку задачі.
    Кожну букву слова Word1 спів ставляємо з буквами слова Word2. Для цього використовуємо цикл від 1 до довжини (Word1). Для порівняння букв використовуємо команду pos (Word1[i], Word2), яка шукає в рядку Word2 перше входження букви Word1[i] або<O> , якщо такого входження немає. Якщо буква Word1[i] знайдена в слові Word2, то вона з слова Word2 вдається.
  1. Алгоритм розв’язку задачі(пошук букв)
    Алг Літера(літ Word1, Word2, Т)

арг Word1, Word2

рез

Поч ціл і

для і від 1 до
довж (Word1)

ПЦ

якщо pos (Word1[i], Word2)=0

то Т:=’скласти не можна’

інакше знищити (Word2, pos (Word1[i], Word2),1)
все

кц
Т:=’скласти можна’

Кц

  1. Текс програми розв’язку задачі.
    programa litera;

    Uses crt;

    Var

        Word1, Word2: string;

        I: integer;

    Begin

        Clrscr;

write(‘Введіть перше слово, яке потрібно скласти’);

readln(Word1);

    writeln(‘ Введіть друге слово, з якого потрібно скласти’);

readln(Word2);

for i:=1 to length (Word1) do

begin

        if pos (Word1[i], Word2)=0

            then

            begin

                        writeln(‘ скласти не можна’);

                        readln;

                        halt(0);

end

else delete(Word2, pos (Word1[i], Word2),1);

end;

writeln(‘ скласти можна’);

readln;

end.

Опис програми

  • Спочатку йде розділ заголовок змінних Word1, Word2: string; I: integer;
  • В основній програмі організується цикл for для порівняння кожної букви слова Word1 з кожною буквою рядка Word2. Максимальне значення параметру циклу [i], задається як довжина слова Word1, визначається функцією length (Word1)
  • Порівняння наступного символу першого слова (Word1[i]) з усіма символами слова (Word2) приводиться за допомогою функції pos (Word1[i], Word2),
  • Якщо функція pos повертає значення 0, то на екрані монітора виводиться надпис (‘ скласти не можна’) та за допомогою процедури Halt (o)відбувається зупинка виконання програми.
  1. Тестування програми

    Введіть слово, яке потрібно скласти Мак
    Введіть слово з якого потрібно скласти Максим
    Можна скласти

Введіть слово, яке потрібно скласти Зима
Введіть слово з якого потрібно скласти Зимовий
Скласти не можна

  1. Контрольні запитання

    1. Як пояснити, що рядкові величини подібні до масивів
    2. Де знаходиться інформація про кількість заданих елементів символьного рядка
    3. Які операції дозволені над рядковими величинами
    4. Для чого призначена функція pos(S_find, S), призначення її параметрів та результат роботи
    5. Для чого призначена функція Length< Ім’я змінної>
    6. Для чого призначена функція Copy(S, Star, len)
    7. Для чого призначена процедура delete(S, Star, len)
    8. Чим відрізняються операції S_new:=S[i]+S_new та S_new:=S_new S[i]+ S[i] . Обґрунтуйте свою відповідь.
    9. Наведіть власний приклад програми для роботи з рядковими величинами
    10. Який результат роботи фрагменту програми
      t=’літо’; S:=””
      for i=1 length(t) do S:=t[i]+S;

3. Варіанти задач для лабораторної роботи

3.1 Дано рядок, що містить текст. Підрахуйте кількість слів, що починаються і закінчуються на одну і ту саму букву.

3.2 Дано рядок. Надрукувати в алфавітному порядку всі слова з даного рядка, яка має задану довжину <n>

3.3 Дано рядок, який містить текст та арифметичні вирази <a Ө b>, де Ө один із символів +,-,*,/. Виписати всі арифметичні вирази і обчислити їх значення.

3.4 Дано рядок, що містить текст деякі два слова. Визначте скільки разів вони входять в текст і скільки разів вони входять безпосередньо один за одним.

3.5 Дано рядок. Складіть в алфавітному порядку список всіх слів, які зустрічаються в цьому тексті.

3.6 Дано рядок, що містить текст в який включаються російські та англійські слова. Отримати новий рядок, замінивши в початковій всі великі букви стрічковими і навпаки.

3.7 Дано рядок, що містить текст набраний заголовними українськими буквами. Привести частковий аналіз тексту, тобто вказати в процентах, скільки разів зустрічається та чи інша буква.

3.8 Двовимірний масив n*m містить деякі букви українського алфавіту, розміщених в добровільному порядку. Написати програму, яка провіряє чи можна з цих букв скласти задане слово S. Кожна буква масиву, використовується не більше одного разу.

3.9 Написати програму, перетворення натуральних чисел римської нумерації, в десяткову систему числення.

3.10 Рядок містить довільний український текст. Провірте, яких букв найбільше голосних чи приголосних.

3.11 Дано рядок з цифр. Знищіть цифри, які повторюються. Цифри, які залишилися розмістити в порядку зростання.

3.12 Відредагуйте дане речення, знищувати з нього всі слова з непарними номерами і перевертати слова з парними номерами, наприклад,

How     do     you     do         od     od

1    2    3    4

3.13 Знайдіть найбільше слово в тексті

3.14 Відредагуйте дане речення, знищуючи з нього слова, які зустрічаються в реченні задане число разів.

3.15 Дано два речення. Знайдіть саме коротке слово першого речення, якого немає в другому реченні.

3.16 Для пар, які зустрічаються в заданому тексті рядом розміщених символів потрібно вказати, скільки раз зустрічаються в тексті кожне з таких двох букових сполучень.

3.17 Для даного тексту, визначте довжину вмістимих в ній максимальної серії символів, які відрізняються від букв

3.18 Дано два різних слова, в кожному з яких від 1 до 8 рядкових латинських букв, за кожною з яких пробіл. Надрукуйте ці слова в алфавітному порядку (Рахувати, що буква «пробіл» ———-)

3.19 Перерахуйте всі слова даного речення, яке складається з тих же букв, що і перше слово речення.

3.20 Дано рядок, який складається з слів і пробілів. Перевірте кожне слово, зберігши, незмінним їх порядок в рядку.

3.21 Скільки букв залишиться на своїх місцях в даному рядку, якщо його перевернути.

3.22 Дано два рядки. Знайти найбільшу їх спільну частину.

3.23 Для кожного із слів даного речення вкажіть, скільки разів воно зустрічається в реченні.

Процедури і функції для роботи з рядковими даними.

Consat(S1[,S2…Sn])

Функція типу String

Повертає рядок, який представляє собою з’єднання рядків параметрів S1, S2,…,Sn

Copy(S,I,K)

Функція типу String

Копіює з рядка (S) R символів починаючи з номера <i>

Delete(S,I,K))

Процедура

Знищує <k> символів з рядка<S>, починаючи з символу з номера <i>

Insert(subst,s,i)

Процедура

Вставляє підрядок Subst в рядок <S>, починаючи з символу з номером і

Length(S)

Функція типу integer

Повертає довжину рядка <S>

Pos(subst,s)

Функція типу integer

Відшукує в рядку <S> перше входження підрядка Subst і повертає номер позиції, з якого він починається, або О, якщо він не знайдений

Str(X[:width[:decimals]],S)

Процедура

Змінює число <x> типу integer або real в рядок символів <S>. width, decimals – ширина поля виводу числа <x> і кількість символів в дробовій частині.

Val(S,X,code)

Процедура

Змінити рядок символів <S> в число X. code=0, якщо заміна пройшла успішно і номер позиції в рядку <S> – в протилежному випадку.

Upcase(ch)

Функція типу char

Повертає символ <ch> в верхній регістр. Upcase(‘a’) поверне A.

ЗАВАНТАЖИТИ

Для скачування файлів необхідно або Зареєструватись

Рядкові величини лаб + (77.0 KiB, Завантажень: 0)

завантаження...
WordPress: 23.37MB | MySQL:26 | 0,545sec