• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

  • Автор темы Romashkinu
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Romashkinu

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

Протабулировать функцию F (x) на отрезке [X начальное ; X конечное ] с шагом h
30b8764848cc.png

Значения x начальное, х конечное, h, a,b,c должны вводиться с клавиатуры.

Заранее спасибо.
 
A

acorn

помощь в решении:

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;
}

остальное сам допишешь
 
D

DarkKnight

Вот посмотри еще топик: link removed будет немного яснее...
Будут вопросы пиши...
 
R

Romashkinu

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

ensane

помощь в решении:

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;
}

остальное сам допишешь

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

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.
 
R

Romashkinu

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

acorn

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;
}
 
E

ensane

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

DarkKnight

Хотя у меня (VS 2008) на ноль делить можно.
Хм... Можно с этого места поподробнее пожалуйста.. :)
Очень интересно.... Желательно в битовом представлении если возможно...
Например число(4байта) разделить на 0...

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

Если MS Visual Studio - то создаешь новый проект, и первые две строчки из кода перекидываешь в stdafx.h (этот файлик создаст сама среда). Если VS 2005 и выше - то колдуй с настройками ЮНИКОДа (в свойствах проекта). Строчки с буковками заключишь в макрос (вообще такие вещи вам преподаватель объяснять должен)
Если Borland C++ Builder, то тебе придется долго гемороиться и убирать нафиг все формы.
Если vi/gcc, то Господь тебе в помощь. Впрочем, если задаешь такие вопросы, то вряд ли это vi/gcc.
Еще раз повторюсь... Зачем вы говорите то, что сами не представляете что означает и зачем сделанно..
В этом проекте вы используете только #include <iostream>
Стандартную библиотеку ввода-вывода...
Итоговый результат будет везде один и тот же... Не зависимо ни от чего ни от среды ни от ОС ни от компилятора (главное что бы он поддерживал стандарт)...

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

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

В этом проете

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

lazybiz

Кстати, выражение типа "#define int double" не противоречит стандарту языка Cи, хотя и не несет за собой особого смысла.
 
D

DarkKnight

lazybiz, Лэйз ;-))) Ну что ты опять ;-))) Мы с тобой спокойно живем ;-)) Ни с кем не ссоримся.... :)) :what?:
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!