Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------MAIN------------------------------
- //Реализуйте модуль, подключение которого перегружает операции помещения в
- //поток вывода и извлечение из потока ввода для класса, содержащего методы разложения
- //функции exp(x) + exp(ax) в ряд Тейлора.На экран должно выводиться n первых слагаемых
- //формулы Тейлора.Значения a и n определяет пользователь.
- #include "pch.h"
- #include <iostream>
- #include "Header.h"
- int main() {
- setlocale(LC_ALL, "Russian");
- ac ac;
- cin >> ac;
- cout << ac;
- system("pause");
- }
- //----------------------------Header.h-----------------------------------------
- #pragma once
- #include <iostream>
- using std::istream;
- using std::ostream;
- using std::cin;
- using std::cout;
- class ac {
- float a;
- float n;
- float x;
- public:
- friend istream& operator >> (istream&, ac&); //Прототип функции, сама функция вынесена за класс (ввод)
- friend ostream& operator << (ostream&, ac&); //Прототип функции, сама функция вынесена за класс (вывод)
- ac();
- };
- ac::ac() {
- a = 0;
- n = 0;
- x = 0;
- }
- istream& operator >> (istream& stream, ac& ac) { //Сама функция, перегрузка операции >>
- cout << "Введите a: \t";
- stream >> ac.a; //сейчас stream вместо cin, но в ином случае вместо cin могут другие объекта потока ввода
- cout << "Введите n: \t";
- stream >> ac.n;
- cout << "Введите x: \t";
- stream >> ac.x;
- return stream;
- }
- ostream& operator << (ostream& stream, ac& ac) { //Сама функция, перегрузка операции <<
- float gh = 0.0;
- int w = 1;
- for (int st = 0; st < ac.n; st++) {
- gh = (exp(st*(log(ac.a*ac.x))) / w + exp(st*(log(ac.x))) / w);
- w = 1;
- for (int j = 1;j <= (st + 1);j++) {
- w = w * j;
- }
- if (st < (ac.n - 1)) {
- stream << gh << " + ";
- }
- if (st == (ac.n - 1)) stream << gh << " \n";
- }
- return stream;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement