Не получить требуемой эластичности по формуле - PullRequest
0 голосов
/ 30 января 2019
#include <stdio.h>
#include <math.h>

int main() {
    float x[5] = { 60, 61, 62, 63, 65 }, y[5] = { 31, 36, 38, 40, 41 };
    int i, Elasticity;

    for (i = 0; i < 5; i++) {
        Elasticity = ((y[i + 1] - y[i]) / y[i]) / ((x[i + 1] - x[i]) / x[i]);
        printf("Elasticity is %d",Elasticity);
    }
    return 0;
}

Я хочу напечатать значения эластичности в соответствии с разработанной формулой, но получаю неправильные значения.Например, для первого случая я должен получить Elasticity = ((36 - 31) / 31) / ((61 - 60) / 60) = 9,677 (приблизительно)

Что должно быть сделано?

1 Ответ

0 голосов
/ 30 января 2019

Три вещи:

  1. Elasticity относится к типу int.Он не может содержать дробные части.Вам нужно сделать его float, double или long double, чтобы он мог содержать дробную часть.

  2. Вы используете спецификатор формата %d вваш printf вызов, который предназначен для печати целого числа со знаком в base-10.Используйте %f, чтобы распечатать float или double.

  3. Как указывал commenter @ user58697, вы выполняете доступ вне границ на y[i + 1] в последнемитерация вашего for цикла.Я не уверен, каково ваше намерение в отношении ваших расчетов, поэтому я не могу предложить решение для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...