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

Значения функции F на интервале от X нач до Хкон с шагом dX - C++

Восстановить пароль Регистрация
 
V1k1nG
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 5
18.11.2012, 22:00     Значения функции F на интервале от X нач до Хкон с шагом dX #1
Привет всем=) Учусь на программиста, возникла проблема с решением задачи на с++. Помогите пожалуйста.
Задание сформулировано так:
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от X нач до Хкон с шагом dX .
функция f(x)=ax^2-bx+c при x<-3; (x-a)/(x-c) при -3<=x<=3 и x/c при x>3.
где а, b , c – действительные числа. Функция F должна принимать действительное значение, если выражение

НЕ(Ац ИЛИ Вц) И (Ац МОД2 Сц)

не равно нулю, и целое значение в противном случае. Через Ац, Вц и Сц обозначены целые части значений a , b , c , операции НЕ, И, ИЛИ и МОД2 (сложение по модулю два) – поразрядные. Значения a , b , c , Хнач, Хкон, dX ввести с клавиатуры.

Написал код, но он в некоторых случаях некорректно выводит значение х=0. Вместо него появляется что то вроде e^-16.22. Помогите пожалуйста, а то лаба висит. Код приведу ниже.


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
#include <cstdio>
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <cmath>
using namespace std;
 
 
int main()
{ 
    setlocale(0,"Russian");
 
    double xnach, xkonech,a, b, c;
    double f=0;
    double dx;
    bool h=false;
    cout << "Введите Хнач: "; cin >> xnach;
    cout << "Введите Хконеч: "; cin >> xkonech;
    cout << "Введите dx: "; cin >> dx;
    cout << "Введите a: ";   cin >> a;
    cout << "Введите b: ";   cin >> b;
    cout << "Введите c: "; cin >> c; 
    double x=xnach;
    while(x<=xkonech) {
        if(x<-3)f=a*x*x-b*x+c;
        else if(x>3) {
                        if (c!=0) f=x/c;    
                        else {f=0;
                        h=true;
                    }
        }
        else
            if(x-c!=0) f=(x-a)/(x-c);
            else  {f=0;
            h=true;
            }
 
        if(~((int)a ||(int)b)&&((int)a|(int)c)==0) f = (int)f;
        if(fabs(f) < 1e-5) f=0;
        if(fabs(x) < 1e-5) x=0;
        cout << "\n x=";cout << x;
        if(h)cout << "\t\tделение на ноль запрещено";
        else {cout << "\t\tf="; cout << f;}
        x=x+dx;
        h=false;
    }
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2012, 22:00     Значения функции F на интервале от X нач до Хкон с шагом dX
Посмотрите здесь:

C++ Вычислить значения функции F на интервале от Хнач. до Хкон. с шагом dX
C++ Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX.
Вычислить и вывести на экран в виде таблицы значения функции F, на интервале от Хнач до Хкон с шагом dX C++
C++ Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач до Хкон с шагом dx
Вычислить и вывести на экран ввиде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX C++
Вычислить значения функции F на интервале от Хнач. до Хкон. с шагом dX C++
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX C++
C++ Вычислить и вывести на экран в виде таблицы значение функции F на интервале от Х нач. до Хкон.с шагом dX

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.11.2012, 22:19     Значения функции F на интервале от X нач до Хкон с шагом dX #2
Попробуй в отладчике посмотреть. А так попробуй проверка деления на ноль повыше перетащить, если происходит деление на ноль, то не надо проверять f. Если я все так понял.
V1k1nG
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 5
11.12.2012, 13:26  [ТС]     Значения функции F на интервале от X нач до Хкон с шагом dX #3
Задача решена. Привожу свой рабочий код, может кому пригодится.
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
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <cmath>
using namespace std;
 
int main() { 
    setlocale(0,"Russian");
    double xnach, xkonech,a, b, c, f=0, dx;
    
    cout << "¬ведите ’нач: "; cin >> xnach;
    cout << "¬ведите ’конеч: "; cin >> xkonech;
    cout << "¬ведите dx: "; cin >> dx;
    cout << "¬ведите a: ";   cin >> a;
    cout << "¬ведите b: ";   cin >> b;
    cout << "¬ведите c: "; cin >> c; 
    double x=xnach;
 
    while(x<=xkonech)
    {
        if(x<-3) {
            f=a*x*x-b*x+c;
        } else if(x>3) {
            if(fabs(c)<1e-5)
                f=0;
            else
                f=x/c;
        } else {
            if(fabs(x-c)<1e-5)
                f=0;
            else
                f=(x-a)/(x-c);
        }
        if(~((int)a |(int)b)&&((int)a|(int)c)==0)
            f=(int)f;
        if(fabs(x)<1e-5)
            x=0;
        cout << "\n x=" << x;
        if(fabs(x-c)<1e-5 || fabs(c)<1e-5) {
            cout << "     \t Ж’елить на ноль нельз€";
        } else {
            if(fabs(f)<1e-5)
                f=0;
            cout << "     \t f=" << f;
        }
        x=x+dx;
    }
    _getch();
    return 0;
}
Yandex
Объявления
11.12.2012, 13:26     Значения функции F на интервале от X нач до Хкон с шагом dX
Ответ Создать тему
Опции темы

Текущее время: 19:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru