0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
1

Найти произведения значения функции на заданном промежутке с шагом. Исправить ошибку в коде

20.04.2019, 18:59. Показов 2611. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Суть задания следующая: Нужно найти произведения значений функции, больше заданного А, на заданном промежутке [a,b] с шагом h.
Функция:
1) Y = arccos(x)
2) Y = sqrt(fabs(2*(sin(x))-8))
Нахождение произведения записать отдельной функцией. Собственно, вот что я написал:
C++ (Qt)
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
#include <iostream>
#include <math.h>
using namespace std;
 
double F1(double x)
{
    return ( acos(x) );
}
 
double F2(double x)
{
    return ( sqrt(fabs(2*(sin(x)-8))));
}
 
double F3(double x) {
if  ( (F1(x) > x) || (F2(x)>x) )
{
    return ((F1(x))*(F2(x)));
}
else return 0;
}
 
 
int main()
{
double a,b,h;
cout<<"Enter a:"; cin>>a;
cout<<"Enter b:"; cin>>b;
cout<<"Enter h:"; cin>>h;
 
while(a<=b)
{
    cout<<"x= "<<a<<" | F1(x)= "<<F1(a)<<endl;
    cout <<"x="<<a<<" | F2(x)= "<<F2(a)<<endl;
    cout <<"X="<<a<<" | F3(x)= "<<F3(a)<<endl;
    a+=h;
 
}
 
return 0;
}
F3 выводит не так как нужно или вообще. С F1 та же ситуация. И нужно как-нибудь добавить указатели, чего я тоже не понял как сделать
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2019, 18:59
Ответы с готовыми решениями:

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

Вычислить значения функции с заданным дробным шагом на заданном промежутке циклом For to do
условие : z:=exp(cos(x))-m*sin(x*pi) если x &lt; 1 z:=ln(x)-m*cos(x*pi) если x =&gt;1 Шаг = 0.1 на...

Рассчитать значение функции в заданном промежутке с заданном шагом
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int n,k,s; float...

Найти ошибку в заданном коде и исправить её
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main () { int k,f; ...

13
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2019, 19:14 2
yasonzah, прочитайте условие внимательнее:
Цитата Сообщение от yasonzah Посмотреть сообщение
Нужно найти произведения значений функции
- одной функции. так что придётся Вам переделать код. кроме того, не забывайте про область определения.

p.s. скорее всего Вам нужно сделать один из вариантов (т.е. задание с функцией Y = arccos(x) или
задание с функцией Y = sqrt(fabs(2*(sin(x))-8))) - уточните это у того, кто дал Вам задачу
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
20.04.2019, 22:52  [ТС] 3
А если брать для двух отдельно, что не так с функцией F3?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2019, 23:07 4
Цитата Сообщение от yasonzah Посмотреть сообщение
А если брать для двух отдельно, что не так с функцией F3?
такое впечатление, что Вы не прочитали мой пост выше. напишите как Вы видите код для второго варианта, т.е для функции Y = sqrt(fabs(2*(sin(x))-8)).
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
21.04.2019, 18:50  [ТС] 5
Если только для одной, то произведения никак же не составить, нет?

Добавлено через 15 минут
Yetty, ошибся немного, произведения посчитать можно. Но всё равно код работает не так как нужно
C++ (Qt)
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
#include <iostream>
#include <math.h>
using namespace std;
 
double F2(double x)
{
    return ( sqrt(fabs(2*(sin(x)-8))));
}
 
double F3(double x) {
if  ( (F2(x)>x))
{
    double y;
    y*=F2(x);
}
else return 0;
}
 
 
int main()
{
double a,b,h,y;
cout<<"Enter a:"; cin>>a;
cout<<"Enter b:"; cin>>b;
cout<<"Enter h:"; cin>>h;
 
while(a<=b)
{
    cout <<"x="<<a<<" | F2(x)= "<<F2(a)<<endl;
    cout <<"X="<<a<<" | F3(x)= "<<F3(a)<<"Y="<<y<<endl;
    a+=h;
 
}
 
return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.04.2019, 00:34 6
Цитата Сообщение от yasonzah Посмотреть сообщение
Если только для одной, то произведения никак же не составить, нет?
Цитата Сообщение от yasonzah Посмотреть сообщение
код работает не так как нужно
yasonzah, прочитайте ещё раз условие и постарайтесь понять, что от Вас требуется. Вам нужно найти несколько значений функции на промежутке [a;b] и те из них, которые больше A (это не 'a' начала отрезка, другое 'A') перемножить.

у Вас даже ввода 'A' нет. жду от Вас новый код.
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
22.04.2019, 15:25  [ТС] 7
Yetty,
C++ (Qt)
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
#include <iostream>
#include <math.h>
using namespace std;
 
double F2(double x)
{
    return ( sqrt(fabs(2*(sin(x)-8))));
}
 
double F3(double x) {
if  ( (F2(x)>x))
{
    double y;
    y*=F2(x);
}
else return 0;
}
 
 
int main()
{
double a,b,h,y, A;
cout<<"Enter a:"; cin>>a;
cout<<"Enter b:"; cin>>b;
cout<<"Enter h:"; cin>>h;
cout<<"Enter A:"; cin>>A;
 
while(a<=b)
{
    cout <<"x="<<A<<" | F2(x)= "<<F2(A)<<endl;
    cout <<"X="<<A<<" | F3(x)= "<<F3(A)<<"Y="<<y<<endl;
    A+=h;
 
}
 
return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.04.2019, 21:35 8
yasonzah, сбросьте скрин функций для проверки.
для Y=sqrt(fabs(2*(sin(x))-8))
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
#include <iostream>
#include <cmath>
using namespace std;
 
double Mult(double a, double b, double h, double A, bool &k) 
{    
    double mult=1., Y, eps=1e-9;
    for (double x=a; x<=b+eps; x+=h)
    {
    Y = sqrt(fabs(2.*sin(x)-8.));    
    if (Y>A+eps) {k=true;mult*=Y;}     
    }
    return mult;
} 
 
int main()
{
    bool k=false;
    double a,b,h,A,result;    
    cout << "a="; cin >> a;
    cout << "b="; cin >> b;    
    cout << "step="; cin >> h;
    cout << "A="; cin >> A;
    
    result=Mult(a,b,h,A,k);
    
    if(k) cout << "mult=" << result << "\n";
    else cout << "Values more than " << A << " are absent\n";
 
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
22.04.2019, 21:58  [ТС] 9
Не совсем понял, что именно сбросить?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.04.2019, 22:35 10
yasonzah, скрин функций. например как в теме: Вычислить и вывести на экран в виде таблицы значения функции F
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
22.04.2019, 22:41  [ТС] 11
Название: a2.png
Просмотров: 17

Размер: 1.9 Кб
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
22.04.2019, 22:46  [ТС] 12
Найти произведения значения функции на заданном промежутке с шагом. Исправить ошибку в коде
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
23.04.2019, 00:10 13
Лучший ответ Сообщение было отмечено yasonzah как решение

Решение

yasonzah, предложил Вам сбросить скрин, чтобы проверить правильность записи
Цитата Сообщение от Yetty Посмотреть сообщение
Y = sqrt(fabs(2.*sin(x)-8.));
всё верно.

теперь понятно - нужно каждую функцию обсчитать в одной программе.

Добавлено через 48 минут
yasonzah, не очень мне нравится, как получилось (хотел передать функции как параметр но увы), но всё же лучше чем ничего. кроме того не учтена область определения арккосинуса [-1,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
#include <iostream>
#include <cmath>
using namespace std;
 
double Mult(double a, double b, double h, double A, bool &k, int z) 
{    
    double mult=1., Y, eps=1e-9;
    for (double x=a; x<=b+eps; x+=h)
    {
    if (z==1) Y=acos(x);         
    else Y = sqrt(fabs(2.*sin(x)-8.));    
    if (Y>A+eps) {k=true;mult*=Y;}     
    }
    return mult;
} 
 
int main()
{
    bool k=false;
    double a,b,h,A,result;    
    cout << "a="; cin >> a;
    cout << "b="; cin >> b;    
    cout << "step="; cin >> h;
    cout << "A="; cin >> A;
    
    result=Mult(a,b,h,A,k,1);
    
    cout << "Function Y=arccos(x):\n";
    if(k) cout << "mult=" << result << "\n";
    else cout << "Values more than " << A << " are absent\n";
    
    result=Mult(a,b,h,A,k,2);
    
    cout << "Function Y=sqrt(fabs(2*sin(x)-8)):\n";    
    if(k) cout << "mult=" << result << "\n";
    else cout << "Values more than " << A << " are absent\n";
 
system("pause");
return 0;
}
если у кого есть варианты получше, напишите.
1
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 39
23.04.2019, 00:11  [ТС] 14
Хорошо. Благодарю за оказанную помощь.
0
23.04.2019, 00:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2019, 00:11
Помогаю со студенческими работами здесь

Найти и исправить ошибку в заданном коде
Given real numbers a, b, c, where a is not 0. Find if a quadratic inequality ах2 + bx + с = 0 has...

Табулирование функции на заданном промежутке с заданным шагом
нужно написать прогу к двум любым из этих формул заранее благодарю!

Написать программу табулирования Функции на заданном промежутке с шагом 0.2
Функция Y=|x^2-4|+0.25x-2 Интервал \left

Построить график функции на заданном промежутке с заданным шагом
Построить график функции на заданном промежутке с заданным шагом: Y=2 cos x + x¹, x ?, h=1

Вычислить значение функции на заданном промежутке с заданным шагом:
Вычислить значение функции на заданном промежутке с заданным шагом: C++

Написать блок-схему и программу вычисления функции на заданном промежутке с шагом 0.2 и построить график этой функции
Написать блок-схему и программу вычисления функции на заданном промежутке с шагом 0.2 и построить...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru