С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.11.2022
Сообщений: 3

Класс вектор с конструкторами и операциями

13.11.2022, 16:13. Показов 1069. Ответов 5

Студворк — интернет-сервис помощи студентам
День добрый! Очень прошу помочь хотя бы понять задание и что мне требуется сделать (с++ не изучал, спонтанно дали задание по нему чтобы закрыть академ. разницу в универе).
Задание:
Создать класс вектор, содержащий ссылку на float, количество элементов вектора. Класс имеет конструктор по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор. Определить операции +,-,*,=, +=, -=, *=, [], как функции-члены. Перегрузить потоковые операции вывода и ввода элементов вектора.

Честно говоря, не понимаю какие можно организовать конструкторы и их функции, чтобы подходили под эти требования. Буду бесконечно благодарен за объяснение задания
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2022, 16:13
Ответы с готовыми решениями:

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс "вектор" с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Класс вектор с арифметическими операциями, перегруженные операторы
Добрый день! Нужна помощь. Реализовываю класс вектор с арифметическими операторами с помощью контейнера <vector>. У меня имеются...

Создать класс вектор с несколькими конструкторами
"Написать класс булев вектор. Класс должен содержать несколько конструкторов. Сделать методы вывода вектора на экран, методы определения и...

5
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.11.2022, 21:56
Цитата Сообщение от rasteram Посмотреть сообщение
не понимаю какие можно организовать конструкторы и их функции, чтобы подходили под эти требования.
В смысле "какие"?! Там же написано.
Давайте я вам перечислю их в столбик:
Цитата Сообщение от rasteram Посмотреть сообщение
конструктор по умолчанию
Цитата Сообщение от rasteram Посмотреть сообщение
конструктор с одним [параметром]
Цитата Сообщение от rasteram Посмотреть сообщение
конструктор с двумя параметрами
Цитата Сообщение от rasteram Посмотреть сообщение
конструктор копирования
Цитата Сообщение от rasteram Посмотреть сообщение
деструктор
Операторы:
Цитата Сообщение от rasteram Посмотреть сообщение
+
Цитата Сообщение от rasteram Посмотреть сообщение
-
Цитата Сообщение от rasteram Посмотреть сообщение
*
Цитата Сообщение от rasteram Посмотреть сообщение
=
Цитата Сообщение от rasteram Посмотреть сообщение
+=
Цитата Сообщение от rasteram Посмотреть сообщение
-=
Цитата Сообщение от rasteram Посмотреть сообщение
*=
Цитата Сообщение от rasteram Посмотреть сообщение
[]
Цитата Сообщение от rasteram Посмотреть сообщение
потоковые операции вывода
Цитата Сообщение от rasteram Посмотреть сообщение
потоковые операции ... ввода
Последние две не оформляются обычно членами класса.
Как и +, -, *.

Добавлено через 6 минут
Цитата Сообщение от rasteram Посмотреть сообщение
что мне требуется сделать (с++ не изучал
Синтаксис учите.

Вот пример кода.
Я вместо float параметризированный тип Т подставил (это называется "шаблоном").
Всё, кроме мат. операций (+,-,*, +=, -=, *=), которые непонятно, что должны делать с набором данных.

Что-нибудь понимаете?

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
#include <iostream>
#include <algorithm>
 
template<typename T>
class Vector {
public:
    // конструктор по умолчанию
    Vector() : size(0), data(new T[size]) {}
    // конструктор с одним параметром
    Vector(std::size_t size) : size(size), data(new T[size]{}) {}
    // конструктор с двумя параметрами
    Vector(std::size_t size, const T &value) : size(size), data(new T[size]) {
        std::fill(data, data + size, value);
    }
    // конструктор копирования
    Vector(const Vector<T> &other) : size(other.size), data(new T[size]) {
        std::copy(other.data, other.data + size, data);
    }
    // деструктор
    ~Vector() {
        delete[] data;
    }
    // =
    Vector<T> &operator=(const Vector<T> &other) {
        if (this != &other) {
            delete[] data;
            size = other.size;
            data = new T[data];
            std::copy(other.data, other.data + size, data);
        }
        return &this;
    }
    // []
    T &operator[](std::size_t i) {
        return data[i];
    }
    // это то, о чём в задании забыто -- константный вариант получения элементов векторов
    const T &operator[](std::size_t i) const {
        return data[i];
    }
    // это то, о чём в задании забыто -- метод для получения количества элементов вектора
    std::size_t getSize() const {
        return size;
    }
 
private:
    std::size_t size;
    T *data;
};
 
// потоковая операция вывода
template<typename T>
std::ostream &operator<<(std::ostream &out, const Vector<T> &v) {
    for (std::size_t i = 0; i < v.getSize(); ++i) {
        out << v[i] << ' ';
    }
    return out;
}
 
// потоковая операция ввода
template<typename T>
std::istream &operator>>(std::istream &in, Vector<T> &v) {
    for (std::size_t i = 0; i < v.getSize(); ++i) {
        in >> v[i];
    }
    return in;
}
1
0 / 0 / 0
Регистрация: 13.11.2022
Сообщений: 3
13.11.2022, 22:52  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Что-нибудь понимаете?
Да, есть немного. Спасибо большое. Но код остается сложноватым для меня. Как я понял, заполняется вектор через fiil, или я путаю? Просто хотел бы попробовать вставить сюда и мат. операции, если это возможно.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.11.2022, 23:28
Цитата Сообщение от rasteram Посмотреть сообщение
Да, есть немного.
Это хорошо.

Цитата Сообщение от rasteram Посмотреть сообщение
Как я понял, заполняется вектор через fiil, или я путаю?
Переформулируйте вопрос. Непонятно, что вы хотите узнать.
В конструкторе выше я задаю каждому элементу данных в векторе значение, переданное в конструктор, с помощью std::fill.

Цитата Сообщение от rasteram Посмотреть сообщение
Просто хотел бы попробовать вставить сюда и мат. операции, если это возможно.
Конечно. Пробуйте. Вставляйте. Это возможно.
0
0 / 0 / 0
Регистрация: 13.11.2022
Сообщений: 3
13.11.2022, 23:51  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Переформулируйте вопрос. Непонятно, что вы хотите узнать.
Непонятен момент, как вывести какие-то значения, и как вписать (числа через float, например). Потому, что во всех примерах, которые пересматривал, сразу вписывали числа, а тут, к сожалению не доходит до меня, каким образом подступиться. Даже стыдно немного, уж простите...
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
14.11.2022, 00:28
Цитата Сообщение от rasteram Посмотреть сообщение
Непонятен момент, как вывести какие-то значения, и как вписать (числа через float, например).
Как вводить/выводить данные -- это основы языка. Прочитайте, пожалуйста, что-нибудь по этому вопросу самостоятельно.
Не переписывать же сюда какой-нибудь учебник по С++.

В задании, которое вы показали, нет ни слова про то, что класс должен что-то вводить или выводить.
Там вообще не сказано, что должна быть какая-то программа, в которой что-то должно происходить.

В классе, который я вам написал, предоставлены способы доступа к элементам вектора. Вот с их помощью и вводите/выводите.

Так же написан оператор ввода/вывода в поток/из потока, для того, чтоб можно было вводить/выводить объекты класса как простой тип данных.

Вы же не думаете, что осилите С++ с пары постов на форуме? Это, простите, крайне маловероятно.

Если вам нужно что-то конкретное -- попросите. С высокой вероятностью Вам помогут.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2022, 00:28
Помогаю со студенческими работами здесь

Перегрузка операций (создать класс Matrix (матрица целых чисел),используя класс Vector(вектор целых чисел) с переопределенными для него операциями)
создать класс Matrix (матрица целых чисел),используя класс Vector(вектор целых чисел) с переопределенными для него операциями.Определить...

Класс с конструкторами
Напишите класс Vector2D (вектор на плоскости). В классе необходимо предусмотреть: Два публичных дробных поля (double) vX и vY -...

Создать абстрактный класс Pair с виртуальными арифметическими операциями + производный класс Complex
Создать абстрактный базовый класс Pair с виртуальными арифметическими операциями (+-*/). Реализовать производный класс Complex –...

Класс «матрица» с конструкторами
Помогите разобраться с конструкторами! Приведите пример любой программы в которой есть класс «матрица» и два конструктора: к примеру...

Создать класс с конструкторами
1. Определить пользовательский класс в соответствии с вариантом задания ( #pragma once #include &lt;math.h&gt; class manychlen { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru