С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 9
1

Разработать класс- контейнер, исключительные ситуации

16.12.2020, 18:13. Показов 3134. Ответов 6

Author24 — интернет-сервис помощи студентам
Класс-контейнер МНОЖЕСТВО с элементами типа int.
Реализовать операции:
[] – доступа по индексу;
== - проверка на равенство;
> число – принадлежность числа множеству;
-n - переход влево к элементу с номером n.

Вариант реализации: 2,3 (исключительные ситуации генерируются в операции [] – при попытке обратиться к элементу с номером меньше 0 или больше текущего размера вектора)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2020, 18:13
Ответы с готовыми решениями:

Используя шаблоны и исключительные ситуации реализовать класс контейнер пара (pair)
Помогите, пожалуйста, реализовать. Используя шаблоны и исключительные ситуации реализовать класс...

Создать класс Exception, что позволит обрабатывать заданные исключительные ситуации
мне дается лаба и я хз как ее написать, вот задача: создать класс Exception, что позволяет...

исключительные ситуации
почему не работает?? как надо?? #include<iostream> #include<conio.h> using namespace std; ...

исключительные ситуации
Подскажите, как сделать переполнение в этой задаче: Создать класс для хранения обыкновенных...

6
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
16.12.2020, 22:17 2
В множестве не может быть операции [].
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 9
16.12.2020, 22:52  [ТС] 3
А как тогда быть? Задание именно так сформулировано((

Добавлено через 5 минут
А можете пожалуйста помочь написать для просто для класса с названием Множество?
0
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
16.12.2020, 23:00 4
Цитата Сообщение от Flaming12qr Посмотреть сообщение
А как тогда быть?
Тогда это будет не множество, а упорядоченное множество (кортеж), где элементы вполне могут повторяться.

PS: Тот, кто дает подобные задания, просто издевается ((
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 9
16.12.2020, 23:04  [ТС] 5
Даа, к сожалению программа универа весьма печальна( Объяснений 0, но зато куча непонятных заданий(( Буду очень благодарна за помощь)
0
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
16.12.2020, 23:43 6
Лучший ответ Сообщение было отмечено Flaming12qr как решение

Решение

Вот, накидал что-то (особо не проверял, но вроде должно работать):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <exception>
 
class wierd_int_set
{
public:
    wierd_int_set() : m_values(nullptr), m_size(0) { }
    wierd_int_set(const wierd_int_set& other);
    wierd_int_set(wierd_int_set&& other);
    virtual ~wierd_int_set() { delete[] m_values; }
    wierd_int_set& operator=(const wierd_int_set& other);
    wierd_int_set& operator=(wierd_int_set&& other);
    int operator[](int i) const;
    int& operator[](int i);
    bool operator==(const wierd_int_set& other) const;
    bool operator>(int n) const;
 
private:
    int* m_values;
    int m_size;
};
 
wierd_int_set::wierd_int_set(const wierd_int_set& other)
{
    m_size = other.m_size;
    m_values = m_size > 0 ? new int [m_size] : nullptr;
    for (int i = 0; i < m_size; ++i) m_values[i] = other.m_values[i];
}
 
wierd_int_set::wierd_int_set(wierd_int_set&& other)
{
    m_size = other.m_size;
    m_values = other.m_values;
    other.m_size = 0;
    other.m_values = nullptr;
}
 
wierd_int_set& wierd_int_set::operator=(const wierd_int_set& other)
{
    if (&other == this) return *this;
    delete[] m_values;
    m_size = other.m_size;
    m_values = m_size > 0 ? new int [m_size] : nullptr;
    for (int i = 0; i < m_size; ++i) m_values[i] = other.m_values[i];
    return *this;
}
 
wierd_int_set& wierd_int_set::operator=(wierd_int_set&& other)
{
    if (&other == this) return *this;
    delete[] m_values;
    m_size = other.m_size;
    m_values = other.m_values;
    other.m_size = 0;
    other.m_values = nullptr;
    return *this;
}
 
int wierd_int_set::operator[](int i) const
{
    if (i < 0 || i >= m_size) throw std::range_error("Index out of range!");
    return m_values[i];
}
 
int& wierd_int_set::operator[](int i)
{
    if (i < 0 || i >= m_size) throw std::range_error("Index out of range!");
    return m_values[i];
}
 
bool wierd_int_set::operator==(const wierd_int_set& other) const
{
    if (m_size != other.m_size) return false;
    for (int i = 0; i < m_size; ++i)
    {
        if (m_values[i] != other.m_values[i]) return false;
    }
    return true;
}
 
bool wierd_int_set::operator>(int n) const
{
    for (int i = 0; i < m_size; ++i)
    {
        if (m_values[i] == n) return true;
    }
    return false;
}
PS: Что такое
Цитата Сообщение от Flaming12qr Посмотреть сообщение
-n - переход влево к элементу с номером n.
, я не понял. Судя по заданию, педагог ваш не вполне понимает правила перегрузки операций в С++ (например, то, что при перегрузке нельзя нарушать семантику операций, принятую для встроенных типов).
1
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 9
17.12.2020, 00:01  [ТС] 7
Огромное спасибо!!! Буду теперь разбираться, что да как. Огромное спасибо, что дали направление))
0
17.12.2020, 00:01
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2020, 00:01
Помогаю со студенческими работами здесь

Исключительные ситуации
Надо сделать так, чтоб при вводе чарового символа в итовый вектор выводило сообщение об ошибке, но...

Исключительные ситуации
Как обработать исключительную ситуацию,когда переменная описана как int,к примеру,а вводится...

исключительные ситуации
Описать и реализовать функцию анализа номера телефона, обработайте ошибку создания номера в...

Исключительные ситуации
Доброго времени суток. Возникла такая проблема. Никак не могу разобраться с исключительными...

Исключительные ситуации
Почему программа не работает?? Исключительная ситуация возникающая при деление на нуль....

Исключительные ситуации
Функция должна выполнять проверку параметров, передаваемых и генерировать исключения в случае...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как настроить 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 / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru