0 / 0 / 0
Регистрация: 22.05.2018
Сообщений: 4
|
||||||||||||||||
1 | ||||||||||||||||
Полиморфизм реализации абстрактного типа данных на основе динамического массива22.05.2018, 01:33. Показов 2537. Ответов 3
Метки нет (Все метки)
ТЗ
1. Необходимо реализовать абстрактный тип данных на основе динамического массива. 2. Программа должна быть написана на языке С. Нельзя использовать возможности языка С++. Это значит, что нельзя использовать cout и cin, вместо них нужно использовать printf() и scanf(). Нельзя использовать using namespace std. Нельзя использовать class, вместо них нужно использовать struct. 3. Абстрактный тип данных должен быть полиморфным. Необходимо задать структуру данных и интерфейс так, чтобы можно было не меняя их работать с данными любого типа внутри структуры. В языке С это делается путём сохранения размера типа данных внутри структуры в отдельной переменной. 4. Функции интерфейса должны быть полиморфны, т.е. принимать аргументы также произвольного типа. Это делается при помощи указателей void*. 5. Собственно, основа вашего задания – это именно реализовать абстрактный тип данных и уметь организовать работу с ним. Ваш «Динамический массив» должен быть полиморфным, и, в общем случае, уметь сохранить и извлечь произвольный тип, а не только те, что заданы вариантом. 6. Интерфейс вашего абстрактного типа данных «Динамический массив» реализован верно, если обращения к полям через « . » или « –> » используются только в функциях интерфейса и нигде вне их. 7. Не разыменовывать указатель void* и не использовать с ним адресную арифметику, например void* ptr = malloc(10); int a = ptr[4]; или char c = *(ptr + 4); Если вы хотите работать с void* как с указателем на байт, то приводите его к типу char*. У типа void же размера нет, поэтому разыменование такого типа, который даже не является типом, бессмысленно. Если ваша среда программирования поддерживает такой подход, то это не значит, что будет поддерживать другая. И использование такого подхода будет считаться примером плохого стиля. Задача моего варианта Тип коллекции - Строка Типы хранимых элементов - Символы Операции - Конкатенация, получение подстроки (с i-го символа по j-й), поиск подстроки (реализовать два варианта: чувствительное к регистру сравнение, и нечувствительное) По ТЗ сделала все пункты Решила проверить полиморфизм для типов хранимых элементов int, float, double Для типа элементов char и int всё работает, а для float и double нет и не могу понять что и где не так, перепробовала кучу вариантов и не получается Вот что в итоге есть Include\Atd.h:
0
|
22.05.2018, 01:33 | |
Ответы с готовыми решениями:
3
Реализовать полиморфизм на основе абстрактного класса AnyFigure и его методов. Вывести координаты точки, треуг Создание абстрактного типа данных Написание абстрактного типа данных (полиморфная коллекция) Проверить корректность реализации динамического массива |
23.05.2018, 15:42 | 2 |
Могу только посоветовать искать ошибку отладчиком.
0
|
0 / 0 / 0
Регистрация: 22.05.2018
Сообщений: 4
|
||||||
23.05.2018, 16:09 [ТС] | 3 | |||||
Препод указал на ошибку:
0
|
603 / 403 / 212
Регистрация: 30.04.2017
Сообщений: 743
|
|
23.05.2018, 16:30 | 4 |
del
0
|
23.05.2018, 16:30 | |
23.05.2018, 16:30 | |
Помогаю со студенческими работами здесь
4
Динамический полиморфизм (разработка абстрактного класса) Создать класс для реализации динамического массива Очередь на основе динамического массива Список на основе динамического массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|