Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ryzhiy_Ezhik
0 / 0 / 0
Регистрация: 21.02.2012
Сообщений: 22
#1

Выводится случайное значение переменной у при х=-3. Что делать? - C++

21.02.2012, 15:48. Просмотров 669. Ответов 6
Метки нет (Все метки)

Задание:

Вычислить и вывести на экран таблицу функции y=f(x) в интервале [a,b] с шагом h. Результаты представить в виде таблицы:
х у
_ _
_ _
... ...
Таблицу выровнять с помощью функций форматирования cout.width(), cout.precision().


x^3 / 3+x , x ≤ -3
y= 0, x=0
9x – 27ln(3+x), иначе

x принадлежит [-4;-2], h = 0.1.

Моё решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//---------------------------------------------------------------------------
#pragma argsused
#pragma hdrstop
#include <vcl.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>
 
//---------------------------------------------------------------------------
void main()
{
 clrscr();
 int a = -4;
 int b = -2;
 float h = 0.1;
 float x, y;
 cout.width(2);
 cout << "X";
 cout.width(10);
 cout << "Y\n";
 cout.precision(4);
 
 for (x = a; x <= b; x+=h)
  {
   if (x < -3)
    {
     y = pow(x,3)/(3+x);
     cout << x;
     cout.width(10);
     cout << y << endl;
    }
   else if (x == -3)
   {
    flushall();
    y = 0;
    cout << x;
    cout.width(10);
    cout << y << endl;
   }
   else if ((x>-3)&&(x<=-2))
    {
     y = 9*x - 27*log(3+x);
     cout << x;
     cout.width(10);
     cout << y << endl;
    }
  }
 
 getch();
}
//---------------------------------------------------------------------------
 Комментарий модератора 
Используйте теги форматирования кода!

При х=-3 вместо нуля выводится постороннее значение. Помогите пожалуйста с решением!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2012, 15:48     Выводится случайное значение переменной у при х=-3. Что делать?
Посмотрите здесь:
C++ подскажите что делать при вводимых данных 10 25 и 5 20 программа работает не правильно должна выводить 135 подскажите что делать
При выводе на экран переменной string выводится набор левых символов C++
Написать программу-фильтр, которая при нажатии любых клавиш выводит на экран только буквы и цифры, при этом указывая, что выводится: буква или цифра. C++
C++ Что делать при сопротивлении памяти?
Написать инструкцию, которая присваивает целой переменной случайное число C++
При запуске выдает expression stream !=null; что делать? C++
Непонятное значение в переменной при сложении C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
21.02.2012, 16:45     Выводится случайное значение переменной у при х=-3. Что делать? #2
Ryzhiy_Ezhik, в точке -3 функция терпит разрыв, знаменатель видел
Цитата Сообщение от Ryzhiy_Ezhik Посмотреть сообщение
y = pow(x,3)/(3+x);
3 + (-3) = 0, ты на ноль делишь!

Добавлено через 2 минуты
Ryzhiy_Ezhik, здесь посвятил целый раздел печати таблицы функции, нужно ОДЗ всегда находить!!!См код этого поста http://www.cyberforum.ru/faq/thread4...ml#post2431657
Вот тело твоей функции ОДЗ
C
1
2
3
4
5
6
7
8
9
10
11
int ODZ(double x)//Функция вернёт 1 если значение аргумента x
//лежит в пределах ОДЗ, в противном случаем возвращаемое значение 0
{
        int isCorrect = 1;
        double ipart;
        double fpart = modf(x,&ipart);
        //для точного сравнения нужно прибегать к неким ухищрениям
        if((int(ipart) == -3 && int(fpart*10) == 0) || x < -1)
                isCorrect = 0;
        return isCorrect;
}
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.02.2012, 16:50     Выводится случайное значение переменной у при х=-3. Что делать? #3
-=ЮрА=-,
Цитата Сообщение от Ryzhiy_Ezhik Посмотреть сообщение
if (x < -3)
Там все предусмотрено.
-=ЮрА=-
Заблокирован
Автор FAQ
21.02.2012, 17:08     Выводится случайное значение переменной у при х=-3. Что делать? #4
go,
Цитата Сообщение от go Посмотреть сообщение
Там все предусмотрено.
- а об ОДЗ логорифма забыли...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
int ODZ(double x)//ÔóГ*êöèÿ ГўГҐГ°Г*ВёГІ 1 åñëè Г§Г*Г*Г·ГҐГ*ГЁГҐ Г*ðãóìåГ*ГІГ* x
//ëåæèò Гў ïðåäåëГ*Гµ ÎÄÇ, Гў ïðîòèâГ*îì ñëó÷Г*ГҐГ¬ âîçâðГ*Г№Г*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ 0
{
    int isCorrect = 1;
    //äëÿ òî÷Г*îãî Г±Г°Г*ГўГ*ГҐГ*ГЁГї Г*ГіГ¦Г*Г® ïðèáåãГ*ГІГј ГЄ Г*ГҐГЄГЁГ¬ óõèùðåГ*ГЁГї
    if((x + 3) <= 0)
        isCorrect = 0;
    return isCorrect;
}
 
double f(double x)
{
    //Ïåðâîé ñëåäóåò Г±ГІГ*ГўГЁГІГј ГІГі ГґГіГ*êöèþ 
    //Гі êîòîðîé Г§Г*Г*Г·ГҐГ*ГЁГї Г*ðãóìåГ*ГІГ* Гў ëåâîé Г·Г*Г±ГІГЁ ÷èñëîâîé îñè
    double ret = pow(x,3.0)*sqrt(3 + x);
    if(-3 < x)//Òåïåðü Г*Г*äî Г±ГІГ*ГўГЁГІГј ГґГіГ*êöèþ 
        //Гі êîòîðîé Г§Г*Г*Г·ГҐГ*ГЁГї Г*ðãóìåГ*ГІГ* Гў ГЇГ°Г*âîé Г·Г*Г±ГІГЁ ÷èñëîâîé îñè
        ret = 9*x - 27*log(x + 3);
    return ret;
}
 
int main()
{
    double x, xn, xk, hx;
    cout<<"Enter diapazone of x = [xn;xk] :\n";
    cout<<"Enter xn : ";cin>>xn;
    cout<<"Enter xk : ";cin>>xk;
    cout<<"Enter hx : ";cin>>hx;
    
    cout<<"---------------\n";
    cout<<"  x  |  f(x)  |\n";
    cout<<"---------------\n";
    for(x = xn; x <= xk + hx; x += hx)
    {
        if(!ODZ(x))//Ïðîâåðÿåì ïðèГ*Г*äëåæèò ëè Г§Г*Г*Г·ГҐГ*ГЁГҐ Г*ðãóìåГ*ГІГ* ÎÄÇ ГґГіГ*êöèè
            cout<<setprecision(2)<<setw(4)<<x<<"| point not from ODZ\n";
        else
        {
            cout<<setprecision(3)<<setw(4)<<x<<"| "
                <<setprecision(3)<<setw(8)<<f(x)
                <<endl;
        }
    }
    system("pause");
    return 0;
}
Миниатюры
Выводится случайное значение переменной у при х=-3. Что делать?  
-=ЮрА=-
21.02.2012, 17:09
  #5

Не по теме:

PS:Все задачи с функциями лучше и проще считать с ОДЗ, кто этого не делает(и пытается схалявить) тот и сталкивается с необъяснимыми трудностями аля почему в -3 не считается...

Ryzhiy_Ezhik
0 / 0 / 0
Регистрация: 21.02.2012
Сообщений: 22
21.02.2012, 17:14  [ТС]     Выводится случайное значение переменной у при х=-3. Что делать? #6
-=ЮрА=-, спасибо большое
-=ЮрА=-
21.02.2012, 17:23     Выводится случайное значение переменной у при х=-3. Что делать?
  #7

Не по теме:

Цитата Сообщение от Ryzhiy_Ezhik Посмотреть сообщение
-=ЮрА=-, спасибо большое
- да не за что - эт моя работа вам помогать)Будет время почитайте тот раздел по ссылке, думаю он поможет вам при решении задач и другого плана

Yandex
Объявления
21.02.2012, 17:23     Выводится случайное значение переменной у при х=-3. Что делать?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru