└── lab13
├── Doxyfile
├── Makefile
├── README.md
├── assets
│ └── input.txt
├── doc
│ └── lab13.md
├── test
│ └── test.c
└── src
├── lib.c
├── lib.h
└── main.c
Зверніть увагу. Початковий Текст зберігається у файлі assets/input.txt
однією строкою. Програма повинна зчитати дані з стандартного потоку stdin
(наприклад, за допомогою функції fgets
). Приклад передачі контенту файлу до стандартного потоку вводу main.bin
:
cd lab13
cat ./assets/input.txt | ./dist/main.bin
Розмір буферу повинен бути завідомо відомий, наприклад, 1000 символів.
Виконати одне завдання з пулу завдань на свій розсуд згідно її складності (що впливає на максимальну оцінку, що може бути отримана за лабораторну роботу). Зверніть увагу. Викладач має право надати вам додаткове завдання для виконання.
- Визначити, скільки у тексті оповідальних, питальних, окличних речень (без використання ітерації по кожному символу у циклу).
- Визначити кількість слів у кожному рядку тексту.
- Визначити, скільки разів у тексті зустрічається задане слово, яке необхідно ввести з клавіатури.
- Визначити, скільки у тексті голосних і скільки приголосних букв. Вивести на екран процентне співвідношення.
- Текст – це програма на мові C. Визначити, скільки в ньому операторів циклу.
- Текст – це програма на мові C. Визначити, чи є у наведеному тексті всі пари дужок: (), {}, []. При реалізації цього завдання необхідно створити генералізовану функцію для обробки.
- Визначити кількість таких слів у тексті, у яких перший і останній символи збігаються між собою.
- У кожному рядку тексту змінити порядок символів на протилежний.
- Вилучити з тексту всі пробіли на початку і зайві пробіли між словами, залишивши по одному.
- Вивести саме довге та саме коротке слово з тексту.
- (
*
) Усі скорочення (т.д., т.п., ін.) замінити на повні словосполучення. - (
*
) Знайти найдовше та найкоротше слово в заданому тексті. - (
*
) У тексту записана (без помилок) така послідовність символів:$a ? b$ , де a і b – цілі числа,$?$ – одна з арифметичних операцій. Наприклад,$17 + 2$ . - (
*
) "Зашифрувати" вхідний текст шифром "Цезаря". - (
*
) "Зашифрувати" вхідний текст, для чого в кожному рядку тексту поміняти місцями кожний символ на символ, що знаходиться на відстані від поточного на N позицій. Виконати дешифрування. - (
*
) Для запам’ятовування числа$π$ іноді використовують наступну російську фразу: "это я знаю и помню прекрасно Пи многие знаки мне лишни напрасны". Число букв у кожному слові – це наступна цифра числа: "это" – 3, "я" – 1, "знаю" – 4 і т. д. Розробити програму, яка за зазначеним алгоритмом буде видавати число, використовуючи будь-який текст. - (
**
) Визначити, скільки у тексті слів (без використання ітерації по кожному символу у циклу). Видати всі слова за абеткою. - (
**
) Текст – це перелік прізвищ студентів через кому. Видалити з тексту усі дублікати. - (
**
) Вирахувати для тексту частотну таблицю: для кожного символу визначити його частоту появи у тексті (число таких символів у тексті ділене на загальне число символів у тексті). - (
**
) Знайти всі цифри, які зустрічаються в тексті. - (
**
) Сформувати частотну таблицю символів у тексту та вивести її на екран (з вказанням кількості та процентного відношення). Обмеження - виводити тільки ті символи, що зустрічаються у тексті. - (
**
) Без використання зовнішніх функцій необхідно реалізувати функції перетворення строки, що представляє собою число до фактичного числа (supported types: int, float). У рамках завдання можемо вважати, що строка не має помилок та має лише число
- програма має мати документацію, що оформлена за допомогою утиліти doxygen;
- звіт повинен бути оформлений згідно "Вимогам до структурної побудови звіту";
- продемонструвати відсутність витоків пам’яті;
- доступ до елементів масиву здійснювати через розіменування покажчиків, а не через оператор індексування ([ ]);
- продемонструвати роботу розроблених методів за допомогою модульних тестів;
- у звіті навести ступень покриття коду модульними тестами. 50% - є мінімально допустимим відсотком покриття коду тестами.
- Як "склеїти" два рядки?
- Як визначити, чи є в заданому рядку заданий підрядок?
- Чому рядки в мові C мають назву "Null-terminated C Strings" ?
- Як порівняти два рядки?
- Як у заданому рядку видалити заданий підрядок?