Вопрос: Вычисление значения функции

Тема в разделе "C/C++/C#", создана пользователем -, 6 ноя 2010.

Статус темы:
Закрыта.
  1. Гость

    только начал изучать С++
    программа выдает неправильное решение
    условие:
    f(x,y)=
    y*y*y-1, при abs(y)<=1
    2*y-1 при 1<=abs(y)<=2
    5/8*y-1, при abs(y)>2
    где y=x*x+x-1

    код программы
    Код (C++):
    #include "stdafx.h"
    #include <stdio.h>
    #include <conio.h>
    #include<iostream>
    #include<math.h>
    using namespace std;

    int _tmain()
    {
    double f, x, y;
    cout << " Vvedite x = ";
    cin >> x;
    y = x*x+x-1;
    if (abs(y)<=1)
    {
    f=pow(y,3)-1;
    cout<< "\n f="<<f;
    }
    if (abs(y)>=1 && abs(y)<=2)
    {
    f=2*y-1;
    cout<< "\n f="<<f;
    }
    else
    f=(5/8)*y-1;
    cout << "\n f= "<< f;
    getch ();
    return 0;
    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Лично мне код программы понравился.

    дальнейщее обсужение проблемы отображения кода тут:
    http://codeby.net/forum/threads/38905.html
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2артем1 , вот смотри у тебя ошибка уже в самом задании...
    Вот смотри в этом месте при abs(y) МЕНЬШЕ ЛИБО РАВНЫМ 1
    А далее смотри на следующее условие
    abs(y) Больше ЛИБО РАВЕНЕ 1
    Заметил тафталогию???
    А теперь смотри что происходит:
    Вводим х = 1
    Расчитываем y = 1*1+1-1 = 1
    Идем по условиям :
    y =1, выполняется первое условие расчитываем
    f = 1*1*1-1 =0
    идем дальше
    ооопа(!) торому условию мы тоже соответствуем
    пересчитываем f = 2*1-1 = 1;

    Понял ошибку? Скорее всего у тебя в первом условии знка только СТРОГО МЕНЬШЕ


    Добавлено: Что то вроде этого...
    Код (C++):
    #include <iostream>

    using namespace std;

    int main(void)
    {
    setlocale(LC_ALL,"Russian");
    double Fn, x, y;
    cout<<"Введите x = ";
    cin>>x;
    y = x * x + x - 1;
    cout<<"Вычисление y = "<<y<<endl;

    if ( abs(y) < 1) //abs(y) < 1
    Fn = pow(y,3) - 1;
    else if ( abs(y) <= 2) // 1 <= abs(y) <= 2
    Fn = 2 * y - 1;
    else // abs(y) > 2
    Fn = 5.0/8 * y - 1;
    cout<<"Функция F("<<x<<","<<y<<") = "<<Fn<<endl;
    }
     
Загрузка...
Статус темы:
Закрыта.

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