Помогите убрать лишние строки из кода

Помогите убрать лишние строки из кода

Нужно проверить код. Вычисление интеграла методом прямоугольников.
Программа работает, но в последних 9-ти строках сомневаюсь. Можно ли как-то от них отойти/избавиться или заменить на что-то более простое?

#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;

double InFunction(double x) //Подынтегральная функция
{
    return (x*x); //Например, 3*x*cos(x)
}

double CalcIntegral(double a, double b, int n)
{
    do {
        cout << "n: " << "\n n= ";
        cin >> n;
    } while (n <= 0);

    do {
        cout << "a= ";
        cin >> a;
        cout << "b= ";
        cin >> b;
    } while (a >= b);

    int i;

    double result, h;

    result = 0;

    h = (b - a) / n; //Шаг сетки

    for (i = 0; i < n; i++)
    {
        result += InFunction(a + h * (i + 0.5)); //Вычисляем в средней точке и добавляем в сумму
    }

    result *= h;

    return result;

}

int main(void)
{
    double integral;

    integral = CalcIntegral(2, 5, 12);
    printf("The value of the integral is: %lf \n", integral);
    system("pause");
    return 0;   
}
double CalcIntegral(double a, double b, unsigned int n)
{
    double result, h;
    result = 0;

    h = (b - a) / n; //Шаг сетки

    for (int i = 0; i < n; i++)
    {
        result += InFunction(a + h * (i + 0.5)); //Вычисляем в средней точке и добавляем в сумму
    }
    result *= h;
    return result;
}

А лучше так:

double CalcIntegral(double a, double b, unsigned int n, double (*f)(double))
{
    double result, h;
    result = 0;

    h = (b - a) / n; //Шаг сетки

    for (int i = 0; i < n; i++)
    {
        result += f(a + h * (i + 0.5)); //Вычисляем в средней точке и добавляем в сумму
    }
    result *= h;
    return result;
}

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

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.