Розробити і реалізувати програмно шаблонний клас для подання розріджен
100 UAHРозробити і реалізувати програмно шаблонний клас для подання розріджених одновимірних масивів. Розмір логічного масиву передавати через аргумент конструктора. Для цього виконати такі завдання:
- Розробити і реалізувати програмно структуру класу розрідженого одновимірного масиву.
- Реалізувати зберігання даних будь-якого типу Т у створеному класі.
- Передбачити у класі родовий конструктор за замовчуванням, родовий конструктор копіювання і операцію присвоєння.
- Реалізувати у класі операцію індексування, що повертає посилання на знайдений елемент у масиві. Якщо елемент із заданим індексом не знайдений, то операція повинна створити новий елемент з цим індексом і розмістити його у масив.
- В основній частині програми продемонструвати використання створеного класу.
Порядок виконання роботи
Згідно з умовами завдання потрібно розробити дуже примітивний клас з мінімальною функціональністю. У реальних додатках такий клас буде містити додатково інші, складніші методи, наприклад, видалення з фізичного масиву елемента із заданим індексом.
- За умовами завдання кожний елемент фізичного масиву повинен містити два поля: логічний індекс елемента і його значення. Тому написання програмного коду потрібно почати з розроблення класу для подання одного елемента фізичного масиву. Цей клас має бути шаблонним.
Необхідно вирішити, яку структуру обрати для збереження фізичного масиву. Зазвичай використовують лінійні списки, бінарні дерева або структури із хешуванням індексів.
Лінійний список має найгірші показники за часом пошуку інформації із заданим ключем (індексом), однак є найбільш простим для програмування.
Можна використати контейнерний клас list із бібліотеки шаблонів STL, який реалізований у вигляді двозв’язного списку, кожний елемент якого містить посилання на попередній та наступні елементи. Для використання цього класу слід підключити заголовний файл <list>.
У класі list є конструктор за замовчуванням, який створює клас нульової довжини. У кінець списку можна додати елемент за допомогою функції push_back(). Доступ до будь-якого елемента списку здійснюється через ітератор — змінну типу list<T>::iterator. Ітератор можна розглядати як вказівник на елемент списку. Він використовується для перегляду списку у прямому чи зворотному напрямках. У першому випадку використовується операція інкремента, у другому — декремента.
У класі list також є два методи, що допомагають переглянути список: begin() повертає вказівник на початковий елемент, end() повертає вказівник на елемент, що слідує за останнім. Поточне значення ітератора у циклі порівнюється із значенням, отриманим від end(), за допомогою операції “!=”, оскільки за довільного розміщення в пам’яті сусідніх елементів операція “<” для адрес елементів втрачає сенс.
Приклад. Використання класу list:
#include <iostream> #include <list>
using namespace std; int main() {
list <char> v1;
v1.push_back(‘A’);
v1.push_back(‘B’);
v1.push_back(‘C’);
list<char>:: iterator i = v1.begin(); list <char>:: iterator n = v1.end();
for (i; i != n; ++i) cout << *i << ‘ ‘;
//вміст комірки пам’яті, на яку вказує і
cout << endl; return 0;
}
- Створити клас-шаблон для подання розрідженого масиву, передбачивши поле для зберігання фізичного масиву елементів типу list.
- Додати у клас-шаблон перевантажену операцію індексування operator[]().
- Додати функцію show(), яка виводитиме дані про елемент списку.
- У головній частині програми створити об’єкти заданого класу для різних типів даних (наприклад, double, list).
Продемонструйте роботу створених функцій в основній частині програми для різних типів даних: цілочислового, з плаваючою крапкою, подвійної точності.
-
213 10 0 Здравствуйте, выполню ваш заказ, т.к. имею опыт работы с шаблонными классами. Сделаю быстро и качественно. Есть только вопросы по поводу среды разработки.
-
544 70 13 2 Можу зробити, але лише у понеділок, якщо це для Вас не критично.
-
623 13 0 Сделаю (в среде Visual Studio 2019) за день, но, т.к. немного занят, то приступить смогу только во вторник-среду.
И поэтому в качестве дед-лайна взял бы Пт 13 декабря 20:00.
Если нужно быстрее, или есть другие соображения для обсуждения - обращайтесь в личку, или по контактам в профиле.
Актуальные фриланс-проекты в категории C и C++
Реверс-инжиниринг консольных утилит для опроса контроллеров SSD (Flash ID)1. Цель работы Выделение программного интерфейса (API) взаимодействия с контроллерами SSD/NVMe из предоставленного набора консольных утилит (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron и др.). Результатом должно стать рабочий код на языке C/C++ или точная… C и C++, Десктопные приложения ∙ 3 дня 14 часов назад ∙ 5 ставок |
Разработка карты семян Minecraft Java / просмотрщика семян для сайтаРазработка карты семян Minecraft Java / Seed Viewer для сайтаОписание проекта Необходимо разработать браузерный инструмент Minecraft Java Seed Map / Seed Viewer, который будет работать на нашем сайте и позволит пользователю ввести семя Minecraft Java Edition и просмотреть… C и C++, HTML и CSS верстка ∙ 3 дня 21 час назад ∙ 14 ставок |
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x)
1000 UAH
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x) на идентичной аппаратной платформе (ESP32 + SX1268, 2W) по критериям дальности, пропускной способности, стабильности линка и энергопотребления. Провести тесты с замерами с учетом… C и C++, C# ∙ 8 дней 4 часа назад ∙ 2 ставки |
Консультация и аудит текущего проекта на Odoo 19 Community EditionИщем Odoo разработчика — соло-разработчика с опытом разработки на Odoo 19 Community Edition, в том числе с использованием Claude Code. Нам нужен специалист, который успешно реализовал проекты в Odoo и имеет практический опыт разработки с использованием Claude Code. Важно:… C и C++, Javascript и Typescript ∙ 11 дней 5 часов назад ∙ 8 ставок |
Разработка ПО для Arduino (RF-модули 3–7.5 ГГц, автоматическое сканирование частот)Необходимо разработать систему на Arduino для автоматического поиска активного аналогового видеосигнала и автоматической настройки передатчика на обнаруженную частоту.Планируется использование трех отдельных приемно-передающих модулей: 3000–4200 МГц; 4900–6000 МГц; 6100–7500… C и C++, Встраиваемые системы и микроконтроллеры ∙ 12 дней 6 часов назад ∙ 5 ставок |