C TGA файли
Шлях до вхідного файлу TGA (i)
Шлях до вихідного файлу TGA (o)
Дорога до папки з шрифтами (f)
Приклад :
$ ./meme-generator img1.tga out.tga шрифт
Якщо на вході програми немає всіх трьох параметрів, записуйте ряд з повідомленням "Wrong parameters" і завершіть програму кодом 1.2 .Програма також читає i з вхідного файлу TGA.Якщо під час завантаження виникає помилка, витягніть ряд з повідомленням "Could not load image" і вийдіть з програми з кодом 1.3 .Програма завантажує 26 зображень TGA з папки шрифтів (f), по один на кожен символ великого англійського алфавіту.Файли називаються A.tga, B.tga, C.tga і т.д.д д .( см зпапку з шрифтами в шаблоні (template.tar)Якщо при завантаженні шрифту виникає помилка, програма завершує роботу з кодом 1.ЧетвертийПотім програма читає з входу ряд, який буде містити два числа (top і bottom), розділені пробілом.верхній показує, скільки строк тексту показувати вгору зображення, а нижній показує, скільки строк тексту показувати внизу зображення.Далі програма читає з входу top + bottom рядки тексту, які поступово прорисуються в вхідне TGA-зображення.Шрифт може містити тільки строчні і прописні букви англійської алфавіту і пробіли, інші символи ігноруються.Перетворення строчних букв англійської алфавіту в прописні перед рендерингом (доступний шрифт містить тільки прописні букви).Кожна лінія може містити не більше 100 символів (включаючи символ нової лінії).5 .Програма відбиває завантажені лінії в вхідному зображенні (top строками в верхній частині і bottom строками в нижній частині).Стиль рендерингу залежить від вас, але намагайтеся максимально точно слідувати прикладу.6 .Збережіть редагуваний вхідний TGA-зображення на диск у форматі TGA за шляхом, зазначеним в параметрах командного рядка.Коли ви пишете вихідний файл TGA, ви отримуєте заголовок вихідного вхідного файлу!Це буде набагато простіше, ніж спробувати відновити правильний заголовок вручну.У вашому розпорядженні простий шаблон, в якому є код для завантаження зображення TGA з скрипту, папку з шрифтом і дві зображення для тестування вашої програми.Приклад коду не включає перевірку помилок!Ви повинні додати його до коду самостійно.Коментарі
Використання VLA заборонено.При виконанні завдання відповідно визначте свої власні типи даних, наприклад, для відображення зображення TGA в пам’яті, щоб ви могли добре працювати з зображеннями.Також створюйте набір функцій для обробки зображення TGA, щоб у вас не було всього коду в main функції.Вам не потрібно підтримувати чорно-білі зображення TGA або зображення TGA з прозорості (RGBA).Для цього завдання припустимо, що всі зображення TGA мають глибину кольору 24 біт (RGB) і що їх система координат починається в верхньому лівому куті (тобто.І.не дозволяється 5-й біт в дескрипторі або значення початку/міщення в заголовках).Ви зіткнетеся з помилками пам’яті при роботі з рядками або пікселями.Використовуйте Address Sanitizer.Дуже корисно буде використовувати debuger VSCode при вирішенні цієї задачі.Навіть при відвантаженні/поступовому режимі ви можете перенаправити файл на введення програми, щоб вам не потрібно весь час записувати введення вручну.За верхніми і нижніми значеннями розрахуйте позиції, в яких повинні бути розташовані окремі рядки тексту, а потім нанесіть їх на вхідний зображення TGA.Віддільні зображення символів шрифту TGA містять чорний фон (RGB (0, 0, 0)) і білий передній план.При копіюванні символу в пікселі вхідного зображення ігноруйте пікселі чорного фону і, таким чином, копіюйте тільки чорні пікселі.В іншому випадку у вас буде віддалений чорний прямокутник навколо кожного символу на результативному зображенні.Припустимо, що висота кожного символу в шрифті 34 пікселів (див.Код у шаблоні), ширина у кожного символу різна.При малюванні необхідно враховувати ширину малюваних символів, щоб окремі символи не перекривалися.Залишити коментар в коді.
Додатки 1
Актуальні фриланс-проєкти в категорії C та C++
Реверс-інжиніринг консольних утиліт для опитування контролерів SSD (Flash ID)1. Мета роботиВиділення програмного інтерфейсу (API) взаємодії з контролерами SSD/NVMe з наданого набору консольних утиліт (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron та ін.). Результатом має стати робочий код мовою C/C++ або точна документація структур для… C та C++, Десктопні додатки ∙ 3 дні 18 годин тому ∙ 5 ставок |
Розробка Minecraft Java Seed Map / Seed Viewer для сайтуРозробка Minecraft Java Seed Map / Seed Viewer для сайтуОпис проєкту Потрібно розробити browser-based інструментMinecraft Java Seed Map / Seed Viewer, який буде працювати на нашому сайті та дозволятиме користувачу ввести seed Minecraft Java Edition і переглянути інтерактивну… C та C++, HTML та CSS верстання ∙ 4 дні 1 година тому ∙ 14 ставок |
Порівняльний аналіз ефективності кастомного ПЗ (v2.2-field) та еталонного ПЗ (Meshtastic v2.x)
1000 UAH
Порівняльний аналіз ефективності кастомного ПЗ (v2.2-field) та еталонного ПЗ (Meshtastic v2.x) на ідентичній апаратній платформі (ESP32 + SX1268, 2W) за критеріями дальності, пропускної спроможності, стабільності лінка та енергоспоживання. Провести тести з вимірюваннями з… C та C++, C# ∙ 8 днів 8 годин тому ∙ 2 ставки |
Консультація та аудит поточного проєкту на Odoo 19 Community EditionШукаємо Odoo Developer — соло-розробника з досвідом розробки на Odoo 19 Community Edition, у тому числі за допомогою Claude Code. Нам потрібен спеціаліст, який має успішно реалізовані проєкти в Odoo та практичний досвід розробки з використанням Claude Code. Важливо: розглядаємо… C та C++, Javascript та Typescript ∙ 11 днів 10 годин тому ∙ 8 ставок |
Розробка ПЗ для Arduino (RF-модулі 3–7.5 ГГц, автоматичне сканування частот)Потрібно розробити систему на Arduino для автоматичного пошуку активного аналогового відеосигналу та автоматичного налаштування передавача на виявлену частоту.Планується використання трьох окремих приймально-передавальних модулів: 3000–4200 МГц; 4900–6000 МГц; 6100–7500… C та C++, Вбудовані системи та мікроконтролери ∙ 12 днів 10 годин тому ∙ 5 ставок |