Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Logger {
- public:
- virtual void log(double step, double sq) {
- }
- };
- class NoLogger : public Logger {
- };
- class StdOutLogger : public Logger {
- public:
- virtual void log(double step, double sq) {
- std::cout << "Step: " << step
- << ", Square: " << sq << std::endl;
- }
- };
- double f(double x) {
- return x*x*x -3*x*x + 5;
- }
- double square(Logger * log, double step) {
- double s = 0;
- for ( double x = 0; x < 10; x += step )
- s += f(x) * step;
- log->log(step, s);
- return s;
- }
- double square(Logger * log) {
- double step = 2;
- double s1, s2 = square(log, step);
- do {
- s1 = s2;
- step /= 2;
- s2 = square(log, step);
- } while (abs(s1-s2) > 0.00001);
- return s2;
- }
- void main() {
- std::cout << square(new StdOutLogger());
- }
Add Comment
Please, Sign In to add comment