Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 58

Перезагрузить операции “<<” и “>>” для ввода и вывода многочленов

08.10.2022, 14:44. Показов 581. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перезагрузить операции “<<” и “>>” для ввода и вывода многочленов степени n с действительными коэффициентами (float, double).

Помогите пожалуйста, недавно начал изучать язык C++ и не очень понимаю как сделать эту программу
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2022, 14:44
Ответы с готовыми решениями:

Переопределить операции сдвига для созданного класса для ввода/вывода объектов
Переопределить операции сдвига(&lt;&lt; и &gt;&gt; ) для Вашего класса для ввода/вывода объектов на экран монитора и с клавиатуры.

Операции ввода-вывода
Осуществить вывод в текстовый файл результата сложения двух целочисленных значений, передаваемых в качестве аргументов командной строки....

Операции ввода-вывода
Здравствуйте! Пожалуйста, подскажите, как мне с помощью функций ввода вывода ввести, например, 2 числа, проверить выполнение условия на...

9
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.10.2022, 20:52
Показывайте, как вы храните многчлены.
0
Заблокирован
08.10.2022, 21:03
Цитата Сообщение от lemegeton Посмотреть сообщение
Показывайте, как вы храните многчлены.
Наверное никак не хранит.

Обоснование :
Цитата Сообщение от Alexey7300 Посмотреть сообщение
недавно начал изучать язык C++ и не очень понимаю как сделать эту программу
Добавлено через 38 секунд
Желаемое: готовый код с комментариями и плюшками с чаем.
1
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 58
17.10.2022, 12:40  [ТС]
Я сделал вот такой вот код:
C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
struct Point
{
    double m_a0,m_ax,m_ax2;
 
};
 
std::istream& operator>> (std::istream &in, Point &point)
{
    in >> point.m_a0;
    in >> point.m_ax;
    in >> point.m_ax2;
    
    return in;
}
 
std::ostream& operator<< (std::ostream &out, const Point &point)
{
    out << point.m_a0 << "+" << point.m_ax << "x" <<  "+" << point.m_ax2 << "x" << "^2";
    
    return out;
}
 
int main()
{
    std::cout << "Enter koeficienti: \n";
    
    Point point;
    
    std::cin >> point;
    
    std::cout << "Your mnogochlen: " << point << '\n';
 
    return 0;
}
Но в структуре нужно задавать массив коэффициентов, а не ограничиваться тремя, как сделал это я, пользователь должен ввести n и сам определить какой степени многочлен
Как это можно сделать? Помогите пожалуйста!
Многочлен примерно выглядит так:
Изображения
 
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
17.10.2022, 14:38
Цитата Сообщение от Alexey7300 Посмотреть сообщение
struct Point
Это что-то странное.

Цитата Сообщение от Alexey7300 Посмотреть сообщение
пользователь должен ввести n и сам определить какой степени многочлен
Удачи вам разобраться:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#include <iostream>
#include <utility>
#include <iomanip>
 
/**
 * Single Indeterminate Polynomial
 * @tparam T coefficient Type
 */
template<typename T>
class Polynomial {
public:
    Polynomial() : size{1}, coefficients(new T[1]{}) {}
 
    explicit Polynomial(std::size_t size) : size{size}, coefficients(new T[size]{}) {}
 
    Polynomial(const std::initializer_list<T> &coefficients) : size{coefficients.size()}, coefficients{new T[size]} {
        std::copy(coefficients.begin(), coefficients.end(), Polynomial::coefficients);
    }
 
    Polynomial(const Polynomial<T> &o) : size{o.size}, coefficients(new T[size]{}) {
        std::copy(o.coefficients, o.coefficients + o.size, coefficients);
    }
 
    Polynomial<T> &operator=(const Polynomial<T> &o) {
        if (this != &o) {
            size = o.size;
            if (coefficients != o.coefficients) {
                delete[] coefficients;
                coefficients = new T[size]{};
                std::copy(o.coefficients, o.coefficients + o.size, coefficients);
            }
        }
        return *this;
    }
 
    Polynomial(Polynomial<T> &&o) noexcept
            : size{std::move(o.size)}, coefficients{std::exchange(o.coefficients, nullptr)} {}
 
    Polynomial<T> &operator=(Polynomial<T> &&o) noexcept {
        if (this != &o) {
            size = std::move(o.size);
            if (coefficients != o.coefficients) {
                coefficients = std::exchange(o.coefficients, nullptr);
            }
        }
        return *this;
    }
 
    Polynomial<T> &operator+=(const Polynomial<T> &o) {
        if (this == &o) {
            return *this;
        }
        if (o.size > size) {
            T *extended = new T[o.size]{};
            std::copy(coefficients, coefficients + size, extended);
            delete[] coefficients;
            coefficients = extended;
            size = o.size;
        }
        for (std::size_t i = 0; i < o.size; ++i) {
            coefficients[i] += o.coefficients[i];
        }
        return *this;
    }
 
    virtual ~Polynomial() {
        delete[] coefficients;
    }
 
    std::size_t getSize() const {
        return size;
    }
 
    T &operator[](std::size_t i) {
        return coefficients[i];
    }
 
    const T &operator[](std::size_t i) const {
        return coefficients[i];
    }
 
    T operator()(const T &value) {
        T thisValue{1};
        T result{0};
        for (std::size_t i = 0; i < size; ++i) {
            result += thisValue * coefficients[i];
            thisValue *= value;
        }
        return result;
    }
 
private:
    std::size_t size;
    T *coefficients;
};
 
template<typename T>
std::ostream &operator<<(std::ostream &out, const Polynomial<T> &p) {
    for (std::size_t i = p.getSize(); i > 0; --i) {
        const T &value = p[i - 1];
        if (value >= 0 && i < p.getSize()) {
            out << "+";
        }
        out << std::fixed << std::setprecision(2) << value;
        if (i == 2) {
            out << "*x";
        } else if (i > 1) {
            out << "*x^" << (i - 1);
        }
    }
    return out;
}
 
template<typename T>
std::istream &operator>>(std::istream &in, Polynomial<T> &p) {
    for (int i = 0; i < p.getSize(); ++i) {
        in >> p[i];
    }
    return in;
}
 
template<typename T>
Polynomial<T> operator+(const Polynomial<T> &a, const Polynomial<T> &b) {
    if (a.getSize() < b.getSize()) {
        return operator+(b, a);
    }
    Polynomial<T> result{a};
    for (std::size_t i = 0; i < b.getSize(); ++i) {
        result[i] += b[i];
    }
    return result;
}
 
template<typename T>
Polynomial<T> operator-(const Polynomial<T> &a, const Polynomial<T> &b) {
    if (a.getSize() < b.getSize()) {
        return operator+(b, a);
    }
    Polynomial<T> result{a};
    for (std::size_t i = 0; i < b.getSize(); ++i) {
        result[i] -= b[i];
    }
    return result;
}
 
template<typename T>
Polynomial<T> multiply(const Polynomial<T> &p, const T &coefficient, std::size_t power) {
    Polynomial<T> result(p.getSize() + power);
    for (std::size_t i = 0; i < p.getSize(); ++i) {
        result[i + power] = p[i] * coefficient;
    }
    return result;
}
 
template<typename T>
Polynomial<T> operator*(const Polynomial<T> &a, const Polynomial<T> &b) {
    if (b.getSize() < a.getSize()) {
        return operator*(b, a);
    }
    Polynomial<T> result(a.getSize() + b.getSize() - 1);
    for (std::size_t i = 0; i < a.getSize(); ++i) {
        result += multiply(b, a[i], i);
    }
    return result;
}
 
template<typename T>
Polynomial<T> getDerivative(const Polynomial<T> &p) {
    if (p.getSize() == 1) {
        return Polynomial<T>{0};
    }
    Polynomial<T> result(p.getSize() - 1);
    for (std::size_t i = 0; i < result.getSize(); ++i) {
        result[i] = p[i + 1] * (i + 1);
    }
    return result;
}
 
int main() {
 
    std::size_t size;
 
    std::cin >> size;
    Polynomial<float> a(size);
    std::cin >> a;
 
    std::cin >> size;
    Polynomial<float> b(size);
    std::cin >> b;
 
    std::cout << "a = " << a << "\n"
              << "b = " << b << "\n"
              << "a - b = " << a - b << "\n"
              << "a * b = " << a * b << "\n"
              << "a + b = " << a + b << "\n";
 
    return 0;
}
1
1 / 1 / 0
Регистрация: 10.10.2021
Сообщений: 58
17.10.2022, 16:01  [ТС]
Это нужно сделать со структурой, без класса
0
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
17.10.2022, 16:08
Цитата Сообщение от Alexey7300 Посмотреть сообщение
без класса
это почти одно и то же.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
17.10.2022, 16:24
Цитата Сообщение от Alexey7300 Посмотреть сообщение
Я сделал вот такой вот код:
Цитата Сообщение от Alexey7300 Посмотреть сообщение
Но в структуре нужно задавать массив коэффициентов,
Например как-нибудь так:

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
struct Point
{
    int m_n{0};
    std::vector<double> m_coeff;
};
 
std::istream& operator>> (std::istream &in, Point &point)
{
    point.clear();
    std::in >> point.m_n;
    for(int i = 0; i < point.m_n; i++)
    {
        double tmp;
        in >> tmp;
        point.coeff.emplace_back(tmp);
    }
    
    return in;
}
 
std::ostream& operator<< (std::ostream &out, const Point &point)
{
    bool first = true;
    for(const auto& x : point.coeff)
    {
        if(!first)
            std::out << '+';
        else
            first = false;
 
        out << x;
     }
     std::out << "x" << "^2";
    
    return out;
}
Добавлено через 1 минуту
подумал - m_n в структуре point лишнее.
Ну да ладно. При надобности уберёте / подправите
1
Заблокирован
17.10.2022, 19:05
Цитата Сообщение от Alexey7300 Посмотреть сообщение
Это нужно сделать со структурой, без класса
Дареному коню, в темное место не заглядывают
Хотите под ключ, руки в ноги и к умному однокурснику с конвертиком.

Добавлено через 3 минуты
KSergey9,
Цитата Сообщение от KSergey9 Посмотреть сообщение
std::vector<double> m_coeff;
Ща будет, мы этого еще не проходили ...
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
17.10.2022, 23:04
Цитата Сообщение от Alexey7300 Посмотреть сообщение
Это нужно сделать со структурой, без класса
Вы издеваетесь?
Когда я сделаю структурой без класса, какие ещё возникнут условия?
Давайте сразу все ограничения вываливайте.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Ща будет, мы этого еще не проходили ...
Трали-вали, тили-тили.
Безысходность... безысхооодность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2022, 23:04
Помогаю со студенческими работами здесь

операции ввода-вывода
Доброго времени суток. Только-только начал изучать консольные приложения в Delphi. Дана задача: Составить программу ввода с клавиатуры...

Операции ввода и вывода С++
Необходимо продемонстрировать операции &lt;&lt; и &gt;&gt; для ввода и вывода типов char, int, float, double для какого-либо значения

Перегрузка операции ввода/вывода
В лабораторной говорится: &quot;Перегрузить операции ввода и вывода 2 способами: внутренним и внешним&quot;. Что такое внешним я представляю, а...

Консольные операции ввода - вывода
Доброго времени суток. Нужно написать вот такую программку на ассемблере: Вывести на экран символ &quot;*&quot; так, что бы в первая...

Прокомментировать операции ввода-вывода
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main () { int x,y; printf (&quot;введите x:&quot;); scanf (&quot;%f&quot;,&amp;x); ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru