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

Создание класса квадратичных функций

07.05.2024, 20:01. Показов 586. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно реализовать класс квадратичных функций f(x) = ax^2 +bx + c, предусмотреть 2 конструктора по умолчанию (если он имеет смысл) и с параметрами. Реализовать get-методы для доступа к данным и вычисление значения функции для указанного значения аргумента x, и перегрузить операторы сложение функций и умножение функции на вещественное число, при этом реализация оператора "+" должна сводиться к "+=", а "*" к "*=", и еще перегрузить оператор вывода, запрещены любые массивы, указатели и т. п.
Вот такое огромное задание дал мне препод, проблема в том, что я не понимаю, как должен выглядеть конструктор с параметрами и тема с перегрузкой операторов сложения вообще не понятна.
Помогите, пожалуйста хотя бы набросок кода сделать!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2024, 20:01
Ответы с готовыми решениями:

Реализация функций ввода/ вывода, создание конструкторов класса
Требуется создать класс String для работы со строками символов. Перегрузить операторы ‘=‘, ‘+=‘ так, чтобы производилось сложение строки и...

Вызов функций класса Dictionary функциями дружественного класса
Функции класса Tree используют функции дружественного класса Dictionary,но вылетают ошибки,не находятся определения функций класа...

Подскажите пожалуйста, программа на создание класса и переопределение функций класса Object
Реализовать класс множество целых чисел, содержащий функции добавления и удаления элемента, упорядочивания множества по возрастанию,...

4
Заблокирован
07.05.2024, 20:14
Лучший ответ Сообщение было отмечено nikulin_artyom1 как решение

Решение

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
#include <iostream>
 
class QuadraticFunction {
private:
    double a, b, c;
 
public:
    QuadraticFunction() : a(0), b(0), c(0) {}
    QuadraticFunction(double _a, double _b, double _c) : a(_a), b(_b), c(_c) {}
    double getA() const { return a; }
    double getB() const { return b; }
    double getC() const { return c; }
 
    double calculate(double x) const {
        return a * x * x + b * x + c;
    }
 
    QuadraticFunction& operator+=(const QuadraticFunction& other) {
        a += other.a;
        b += other.b;
        c += other.c;
        return *this;
    }
 
    QuadraticFunction& operator*=(double scalar) {
        a *= scalar;
        b *= scalar;
        c *= scalar;
        return *this;
    }
 
    friend std::ostream& operator<<(std::ostream& out, const QuadraticFunction& func) {
        out << "f(x) = " << func.a << "x^2 + " << func.b << "x + " << func.c;
        return out;
    }
};
 
int main() {
    QuadraticFunction f1(1, 2, 1);
    QuadraticFunction f2(2, -1, 3);
    std::cout << "f1(x) = " << f1 << std::endl;
    std::cout << "f2(x) = " << f2 << std::endl;
    std::cout << "f1(2) = " << f1.calculate(2) << std::endl;
    std::cout << "f2(2) = " << f2.calculate(2) << std::endl;
    f1 += f2;
    std::cout << "f1(x) + f2(x) = " << f1 << std::endl;
    f2 *= 2.5;
    std::cout << "f2(x) * 2.5 = " << f2 << std::endl;
}
2
 Аватар для moskitos80
442 / 99 / 42
Регистрация: 04.10.2011
Сообщений: 359
07.05.2024, 23:11
думаю вместо:

C++
1
2
3
4
5
6
...
double calculate(double x) const
{
    return a * x * x + b * x + c;
}
...
будет изящнее перегрузить оператор вызова:

C++
1
2
3
4
5
6
...
double operator()(double x) const
{
    return a * x * x + b * x + c;
}
...
все-таки объект-функция как никак ))
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.05.2024, 23:29
Цитата Сообщение от nikulin_artyom1 Посмотреть сообщение
C++
1
friend std::ostream& operator<<(std::ostream& out, const QuadraticFunction& func) {
А с какой целью эта функция дружественная? Геттеры вроде есть.
Цитата Сообщение от nikulin_artyom1 Посмотреть сообщение
C++
1
QuadraticFunction(double _a, double _b, double _c) : a(_a), b(_b), c(_c) {}
Уже давно нет необходимости делать названия параметров конструктора отличающимися от названия полей.
На практике нижние подчеркивания только уменьшают читаемость кода, вместо того, чтоб её увеличивать.

Добавлено через 5 минут
Цитата Сообщение от MelWindDas Посмотреть сообщение
при этом реализация оператора "+" должна сводиться к "+=", а "*" к "*=",
Из текста нифига не понятно -- операторы + и * нужно реализовывать или нет?

Если да и одновременно "они должны сводиться", то как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
QuadraticFunction operator+(QuadraticFunction a, const QuadraticFunction &b) {
    return a += b;
}
 
QuadraticFunction operator*(QuadraticFunction a, double b) {
    return a *= b;
}
 
QuadraticFunction operator*(double a, QuadraticFunction b) {
    return b *= a;
}
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
08.05.2024, 00:01
Цитата Сообщение от lemegeton Посмотреть сообщение
то как-то так:
Ох уж эта лень
В погоне за меньшим количеством строк, теряем возможности оптимизаций (не стоит возвращать аргументы, и результат lvalue не id-expression).
https://wandbox.org/permlink/1GJlJcuuIYCkyrTg
В контексте конкретно этого класса не критично, но вообще стоит взять на заметку.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2024, 00:01
Помогаю со студенческими работами здесь

Аппроксимация функции с использованием кусочно-квадратичных пробных функций
Помогите найти ошибку аппроксимация функции cos(2x) на отрезке

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

Создание функций-членов класса
Заданы координаты двух вершин основания равнобедренного треугольника и его высота. Опреде-лить координаты третьей вершины (два решения),...

Вызов функций одного класса из другого класса
В начале был класс public class Matrix { public double matrix; public Matrix(int i) //Создание матрицы ...

СОСТАВЛЕНИЕ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ. СОЗДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ. РАБОТА С МАССИВАМИ
Создать программу, использующую набор функций для вывода на печать слова: ТЕСТО


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru