Решение уравнения для y

0

При тестировании уравнения я получаю -1.#IND00 как ответ, когда он решает для y. Я в основном пытаюсь создать программу, которая решает для y дать уравнение ниже

у = у /(3/17) -z + х/(а% 2) +PI

#include <stdio.h> 
#include <math.h>
#define PI 3.14

int main (void)
{
    int a=0;
    double z=0,x=0,y=0;

    printf("Values for x, z, and a:"); 
    scanf("%lf%lf%d", &x,&z,&a); 

    y = (((y/(double)(3/17)))-z + (x/(a%2))+PI); 
    printf("y = %lf\n", y);

    return 0;
}
  • 11
    Приведение (double)(3/17) слишком поздно, чтобы что-либо изменить. Вы хотите разыграть перед делением - или просто написать 3.0 .
  • 0
    как сказал @T.C. двойное приведение слишком поздно. также рассмотрите возможность использования static_cast поверх бросков в стиле C. также проверьте возвращаемое значение scanf чтобы убедиться, что вы прочитали 3 допустимых значения
Показать ещё 2 комментария
Теги:

1 ответ

0

Поскольку вопросов нет, я предполагаю, что вопрос: "Как вы пишете программу C++, которая решает это уравнение?"

C++ - это язык программирования и сам по себе не способен решить ваше уравнение, т.е. C++ не будет преобразовывать ваше уравнение, чтобы получить его в форме, где y встречается только на левой стороне, а все параметры на Правая сторона. Вы должны преобразовать его самостоятельно, вручную или с помощью решателя.

Что происходит в опубликованном коде?

Позволяет начинать в самой левой части уравнения y/(double)(3/17) изнутри наружу в соответствии с круглыми скобками:

  • 3/17 интерпретируется как целочисленное деление, что приводит к 0;
  • (double)(0) отличает целое число 0 в double от 0.0;
  • y/0.0 - это деление на 0, как объясняется в этом сообщении, что приводит к вашей ошибке.

Вы можете исправить это, как указано в комментариях, либо лидируя первое целое число (double)3/17 либо превращая целое число 3 в double 3.0 или используя static_cast.

  • Однако y все еще инициализируется до 0, поэтому y/(double)3/17 равно 0 а вычисленное уравнение в основном -z + x/(a%2) + PI.

Итак, если вы не преобразуете уравнение и не превратите преобразованное уравнение в код, вы не получите ожидаемых результатов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню