Вопрос: Программа не верно вычисляет выражение

Тема в разделе "C/C++/C#", создана пользователем Alex069, 9 дек 2010.

Статус темы:
Закрыта.
  1. Alex069

    Alex069 Гость

    Задача должна выдать на экран ответ h=4.23655 , а у меня выдает h=4.23194!
    при условии
    x=3.251
    y=0.325
    z=0.466*10[sup]-4[/sup]
    или я возможно гдето допустил ошибку!!
    Код (C++):
    #include<iostream.h>
    #include<math.h>
    int main()
    {
    double x, y, z, a, b, c, h; // Объявление переменных
    cout << "Vvedite x: "; // Ввод значений x, y и z
    cin >> x;
    cout << "Vvedite y: ";
    cin >> y;
    cout << "Vvedite z: ";
    cin >> z;
    a=pow(2.0,pow(y,x))+pow(pow(3.0,x),y);
    b=y*(atan(z)-1/3.);

    c=fabs(x)+1.0/pow(2,y)+1;

    h=a-b/c;

    cout<<"Result h="<<h<< endl;
    return 0;
    }
     

    Вложения:

    • 12.JPG
      12.JPG
      Размер файла:
      43,3 КБ
      Просмотров:
      33
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Проверяй.
    Код (C++):
    #include <iostream.h>
    #include <math.h>

    int main()
    {
    double  x, y, z, s; // Объявление переменных
    cout << "Vvedite x: "; // Ввод значений x, y и z
    cin >> x;
    cout << "Vvedite y: ";
    cin >> y;
    cout << "Vvedite z: ";
    cin >> z;

    s = pow( 2, pow( y, x ) ) + pow( pow( 3, x ), y ) - ((y * (atan( z ) - 1.0 / 3) ) / (fabs( x ) + 1.0 / (y * y + 1) ));
    cout << "Result s = " << s << endl;

    return 0;
    }
     
  3. Alex069

    Alex069 Гость

    Спасибо всё верно!!!! Тока не пойму в чём тогда у меня была проблема!!!??? Впринципи записано у меня также!!!!!
    Токо разбито на несколько частей(а,б,с)
     
  4. Miller85

    Miller85 Гость

    Разве задержку в конце не надо?

    Ты 2y не правильно перевел в конце... Надо y*y+1 и pow не надо
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Alex069
    А хз, возможно вот здесь: b=y*(atan(z)-1/3.);
    Попробуй написать: b=y*(atan(z)-1.0/3.0);

    Miller85
    > Разве задержку в конце не надо?
    А что, это повлияет на результат?

    Добавлено: Miller85
    > Надо y*y+1 и pow не надо
    Ты немного опоздал...
     
  6. Miller85

    Miller85 Гость

    Да нет...Просто у меня не кажет результат без неё:)


    Добавлено: Ну дак что...:))
     
  7. Alex069

    Alex069 Гость

    Спасибо!
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    > Ну дак что...)
    Что?) Хочешь - поставь))
     
  9. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
            c=fabs(x)+1.0/pow(2,y)+1; //Вот сюда посмотри
    //тут же y^2 но не 2^y, ну и скобочки забыл тебе же 1 нужно поделить на сумму а у тебя получается 1/y^2 и только потом +1
    Добавлено: вот:
    Код (C++):
    c=fabs(x)+1.0/(pow(y,2.0)+1);
    Ну и как уже lazybiz и Miller85 сказали, что pow при квадрате не используют, но ошибкой это конечно не является... ;-)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей