двойной тип данных, ведущий себя неопределенным образом - PullRequest
0 голосов
/ 04 сентября 2018

Несмотря на то, что я знаю, что Turbo C сейчас полностью устарел, мой инструктор поставил условие для кодирования в нем. У меня проблема с тем, что, когда я пытаюсь передать двойное значение функции, она не ведет себя должным образом. Я получаю колеблющийся вывод несколько раз, иногда даже странно. Давайте сначала посмотрим мой код:

#include<stdio.h>
#include<conio.h>

double func(double input) {
    return input * input;
}

double simpson1By3(double initial, double final, double parts) {
    double sum = 0;
    double h = (final - initial) / parts;
    double oddSum = 0, evenSum = 0;
    int i;
    printf("%f %f %f\n", initial, final, parts);
    printf("%f\n", h);
    printf("%f %f\n", evenSum, oddSum);
    sum += func(initial) + func(final);
    printf("%f %f\n", evenSum, oddSum);
    for (i = 1; i < parts; i = i + 2) {
        oddSum += func(initial + (i * h));
    }
    for (i = 2; i < parts; i = i + 2) {
        evenSum += func(initial + (i * h));
    }
    oddSum *= 4;
    evenSum *= 2;
    printf("%f %f\n", evenSum, oddSum);
    sum += evenSum + oddSum;
    sum *= h / 3;
    return sum;
}

int main() {
    clrscr();
    printf ("%f", simpson1By3(0, 6, 6));
    getch();
    return 0;
}

образец вывода: enter image description here

Что я там не так делаю? Почему переданные там аргументы ошибочно печатаются вместе с другими переменными и почему это -0 печатается? Пожалуйста помоги. Я пытался найти что-то похожее на форумах, но потерпел неудачу. Пожалуйста, помогите.

enter image description here

enter image description here

enter image description here

...