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

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

13.11.2022, 16:13. Показов 1061. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru