Задача: Протабулировать функцию (с условиями)

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

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

    Romashkinu Гость

    Здравствуйте!
    Буду очень благодарен за помощь в решении и объяснение задачи.

    Протабулировать функцию F (x) на отрезке [X начальное ; X конечное ] с шагом h
    [​IMG]
    Значения x начальное, х конечное, h, a,b,c должны вводиться с клавиатуры.

    Заранее спасибо.
     
  2. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    помощь в решении:

    Код (C++):
    for(int x = x1; x < x2; x+=h)
    {
    if ((x < 3)&&(b!=0))
    {
    cout << a*sqr(x)+sqr(b)*x;
    }
    else if ((x>3)&&(b==0))
    {
    cout << (x-a)/(x-c);
    }
    else
    {
    cout << b+x*c;
    }
    cout << endln;
    }
    остальное сам допишешь
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
  4. Romashkinu

    Romashkinu Гость

    Большое спасибо, а можете объяснить Решение?
     
  5. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    что конкретно непонятно? тут вроде и так всё по-русски написано
     
  6. Romashkinu

    Romashkinu Гость

    Понимаете, я новичок, и даже не знаю какие библиотеки присоединять, только iostream и math?
    Потом за переменные что берем?
    Если не трудно можно написать полный программный код? Извините за наглость :unsure:
     
  7. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    только если на php, жди сишников для готового кода :unsure:
     
  8. Romashkinu

    Romashkinu Гость

    Надеюсь что до сегодняшнего дня они появятся :unsure:
     
  9. ensane

    ensane Гость

    Только при такой постановке главное не забыть добавить в начале
    Код (C++):
    #define int double
    все таки функция подразумевает работу с вещественными числами.
    P.S. Обожаю язык C.
     
  10. Romashkinu

    Romashkinu Гость

    ensane
    Вы можете написать полностью код?
     
  11. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    отвык от типов вообще
    P.S. обожаю язык PHP :unsure:
     
  12. ensane

    ensane Гость

    Вот собственно рабочее решение с маленькими ремарочками:
    Код (C++):
    #include <iostream>
    #include "math.h"

    int _tmain(int argc, _TCHAR* argv[])
    {
    #define int double
    using namespace std;
    int x1, x2, h, a, b, c;
    cout << "Введите x1:";
    cin >> x1;
    cout << "Введите x2:";
    cin >> x2;
    cout << "Введите h:";
    cin >> h;

    cout << "Введите a:";
    cin >> a;
    cout << "Введите b:";
    cin >> b;
    cout << "Введите c:";
    cin >> c;

    for(int x = x1; x <= x2; x+=h)
    {
    if ((x < 3)&&(b!=0))
    {
    cout << a*sqrt(x)+sqrt(b)*x;
    }
    else if ((x>3)&&(b==0))
    {
    cout << (x-a)/(x-c);
    }
    else
    {
    cout << b+x*c;
    }
    cout << endl;
    }
    #undef int
    return 0;
    }
    Однако работоспособность зависит от среды разработки.
    Если MS Visual Studio - то создаешь новый проект, и первые две строчки из кода перекидываешь в stdafx.h (этот файлик создаст сама среда). Если VS 2005 и выше - то колдуй с настройками ЮНИКОДа (в свойствах проекта). Строчки с буковками заключишь в макрос (вообще такие вещи вам преподаватель объяснять должен)
    Если Borland C++ Builder, то тебе придется долго гемороиться и убирать нафиг все формы.
    Если vi/gcc, то Господь тебе в помощь. Впрочем, если задаешь такие вопросы, то вряд ли это vi/gcc.
     
  13. Romashkinu

    Romashkinu Гость

    ensane
    Большое тебе спасибо, долго ломать голову не пришлось. :unsure: Теперь решение ясно :(
    Использую Borland C++
     
  14. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    ensane
    объясни, зачем человеку морочить голову такой гадостью:
    Код (C++):
    #define int double
    -1 тебе, чесн слово..

    Добавлено: Romashkinu
    вот корректный алгоритм, чуток исправлен:

    Код (C++):
    #include <iostream>
    #include "math.h"

    int _tmain(int argc, _TCHAR* argv[])
    {
    using namespace std;
    double x1, x2, h, a, b, c;
    cout << "Введите x1:";
    cin >> x1;
    cout << "Введите x2:";
    cin >> x2;
    cout << "Введите h:";
    cin >> h;

    cout << "Введите a:";
    cin >> a;
    cout << "Введите b:";
    cin >> b;
    cout << "Введите c:";
    cin >> c;

    for(double x = x1; x <= x2; x+=h)
    {
    if ((x < 3)&&(b!=0))
    {
    cout << a*sqrt(x)+sqrt(b)*x;
    }
    else if ((x>3)&&(b==0))
    {
    cout << (x-a)/(x-c);
    }
    else
    {
    cout << b+x*c;
    }
    cout << endl;
    }
    return 0;
    }
     
  15. ensane

    ensane Гость

    Acorn
    Ну дык работает же!
    Да, и вот с этим
    Код (C++):
    cout << (x-a)/(x-c);
    надо что-то сделать. либо проверку на x == c, либо обработку исключений.
    Хотя у меня (VS 2008) на ноль делить можно.
     
  16. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Хм... Можно с этого места поподробнее пожалуйста.. :)
    Очень интересно.... Желательно в битовом представлении если возможно...
    Например число(4байта) разделить на 0...

    Акорн прав совершенно, человеку понять нужно... А вы ужас какой то пишите, я даже эту запись прокомментировать не могу....

    Еще раз повторюсь... Зачем вы говорите то, что сами не представляете что означает и зачем сделанно..
    В этом проекте вы используете только #include <iostream>
    Стандартную библиотеку ввода-вывода...
    Итоговый результат будет везде один и тот же... Не зависимо ни от чего ни от среды ни от ОС ни от компилятора (главное что бы он поддерживал стандарт)...

    И использование готовых шаблонных проектов (я про Visual С, то что вы описали про afx) - плохой стиль для проектов такого рода.... Для этих целей есть empty(пустой) вид проекта...
    И в примере никаким уникодом и близко не пахнет.....

    З.Ы. Мне нравится ваше стремление в чем то разобратся, но пожалуйста, оценивайте уровень автора, и его цель, и не забивайте ему ошибочными, противоречищими и не нужными утверждениями...

    В этом проете

    Добавлено: ГОЛОВУ! Она у него одна и он хочет что бы она работала правильно...
     
  17. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Кстати, выражение типа "#define int double" не противоречит стандарту языка Cи, хотя и не несет за собой особого смысла.
     
  18. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    lazybiz, Лэйз ;-))) Ну что ты опять ;-))) Мы с тобой спокойно живем ;-)) Ни с кем не ссоримся.... :)) :what?:
     
Загрузка...
Похожие Темы - Задача Протабулировать функцию
  1. Янчик
    Ответов:
    0
    Просмотров:
    473
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    778
  3. elzim
    Ответов:
    0
    Просмотров:
    929
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.114
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.102
Статус темы:
Закрыта.

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