Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
#1

Циклы: найти максимальное значение функции на отрезке [a, b] и значение x

03.10.2013, 21:32. Просмотров 2544. Ответов 9
Метки нет (Все метки)

учусь с++ в вузе. после 2 лекции надо сделать 2-ую лабу. написал код.как требовалось, в три файла. всё нормально компилируется, программа запускается, ошибок не выдаёт. но после ввода и считывания a,b,y ничего не происходит
в условии дана система
f= min{a-cos(x-1), a/(b+y),sin^2(y)} x<y
{ max{a^3,ln(x^2+y^2)} y<=x<y+5 }
a+cos^3(x-y) x>y+5
min и max, как я понял - найти наименьшее/наибольшее значение из указанного в скобках. требуется найти максимальное значение функции на отрезке [a,b] и значение x.
первый файл
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
52
53
54
55
56
57
#include<math.h>
 
float sravnenie(float a,float b)
{
    float min;
        do 
            min=a; while(a<b);
        do
            min=b; while(a>b);
        return min;
}
 
 
float math(float a, float x, float b, float y)
{ float f;
  float min=sravnenie(x,y);
    do
       {
         float min2=sravnenie(a-cos(x-1),a/(b+y));
         min2=sravnenie(min2,pow(cos(y),2));
         f=min2;
        }
    while (min==x);
 
  min=sravnenie(x,y+5);
 
    do
        f=a+pow(cos(x-y),3);
    while(min==y+5);
 
    do
    {
     float  min3=sravnenie(x,y);
 
      do 
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      while(min3==y);  
 
      do 
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      while(x=y);
    }
    while(min==x);
 
 
  return f;
}
второй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<math.h>
float math(float, float, float, float);
float sravnenie(float a,float b);
extern float m1;
float srav(float a, float b, float y)
{ float minim=sravnenie(a,b);
   float max=b;
  do  max=a; while (b==sravnenie(a,b));float i=minim,k, m=math(minim,i,max,y);
    float h=fabs((a-b)/2);
    do
    { 
        if (sravnenie(m,math(minim,i+h,max,y) )==m)
            {m=math(minim,i+h,max,y);k=i+h;
        }
        i=i+h; m1=m;
    } while(i<=max);
    return k;
}
и третий
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
float a,b,y,k,m1;
void main (void)
{    float srav(float, float, float);
    
    cout<<"Input a"; cin>>a;
    cout<<"Input b"; cin>>b;
    cout<<"Input y"; cin>>y;
    k=srav(a,b,y);
    cout<<k<<m1;
    
    getch();
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 21:32
Ответы с готовыми решениями:

Найти максимальное и минимальное значение функции на отрезке
Для заданной функции f=x2(x-3) найти максимальное и минимальное значение...

Найти минимальное и максимальное значение функции на отрезке [a; b]
Всем доброго времени суток! Задали лабораторную работу, где необходимо...

Найти максимальное значение в целочисленном массиве, не используя циклы
Дан массив X типа int и его размер n. Найти величину максимума массива без...

Найти значение функции на отрезке
Подскажите пожалуйста как записать через if интервал выделенный на рисунке,...

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

9
MAnton
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
03.10.2013, 21:43 #2
непонятно зачем функция sravnenie если есть функция min() и max(). И в любом случае в функции sravnenie циклы не нужны
0
zss
Модератор
Эксперт С++
6985 / 6547 / 4151
Регистрация: 18.12.2011
Сообщений: 17,275
Завершенные тесты: 1
03.10.2013, 21:46 #3
Цитата Сообщение от Морфей Посмотреть сообщение
float sravnenie(float a,float b) { float min; do min=a; while(a<b); do min=b; while(a>b); return min; }
Здесь программа циклится.
Т.к.
C++
1
2
3
do 
    min=a; 
while(a<b);
При a<b всегда истина.
0
WilFred
31 / 26 / 17
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 21:46 #4
Морфей, в первый файл ты не подключил остальные два(#include <имя файла.cpp>), наверное поэтому)
0
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 21:50  [ТС] #5
в методичке указана необходимость этой функции. ну я её и использовал.

Добавлено через 2 минуты
Цитата Сообщение от WilFred Посмотреть сообщение
Морфей, в первый файл ты не подключил остальные два(#include <имя файла.cpp>), наверное поэтому)
разве обязательно подключать? они в одном проекте. да и в первой лабе так же делал, без подключения других файлов.
0
MAnton
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
03.10.2013, 21:51 #6
ну тогда
C++
1
2
3
4
float min(float a,float b){
if(a<b) return a;
else return b;
}
0
WilFred
31 / 26 / 17
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 21:51 #7
Морфей, сори это я тупанул)
0
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 21:57  [ТС] #8
поменял тело фун-ции sravnenie на
C++
1
2
3
if (a<b) return a;
    else 
        return b;
безрезультатно.
0
MAnton
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
03.10.2013, 22:02 #9
и во втором файле в строке 8 если условие в while истинно то из цикла программа не выйдет
0
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 22:24  [ТС] #10
№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
52
53
54
55
#include<math.h>
 
float sravnenie(float a,float b)
{
    
    if (a<b) return a;
    else 
        return b;
}
 
 
float math(float a, float x, float b, float y)
{ float f;
  float min=sravnenie(x,y);
    if (min==x);
       {
         float min2=sravnenie(a-cos(x-1),a/(b+y));
         min2=sravnenie(min2,pow(cos(y),2));
         f=min2;
        }
    
 
  min=sravnenie(x,y+5);
 
    if (min==y+5);
        f=a+pow(cos(x-y),3);
 
 
    if (min==x)
    {
     float  min3=sravnenie(x,y);
 
      if (min3==y);  
 
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      
 
      if (x=y)
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      
    }
    
 
  return f;
}
№2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<math.h>
float math(float, float, float, float);
float sravnenie(float a,float b);
extern float m1;
float srav(float a, float b, float y)
{ float max, minim=sravnenie(a,b);
    if(b==sravnenie(a,b))  max=a; else max=b; float i=minim,k=0, m=math(minim,i,max,y);
    float h=fabs((a-b)/2);
    do
    { 
        if (sravnenie(m,math(minim,i+h,max,y) )==m)
            {m=math(minim,i+h,max,y);k=i+h;
        }
        i=i+h; m1=m;
    } while(i<=max);
    return k;
}
№3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
float a,b,y,k,m1;
void main (void)
{    float srav(float, float, float);
    
    cout<<"Input a"; cin>>a;
    cout<<"Input b"; cin>>b;
    cout<<"Input y"; cin>>y;
    k=srav(a,b,y);
    cout<<k<<endl<<m1;
    
    getch();
}
вроде работает. правильно считает или нет - не знаю. но лучше неправильно, чем никак. спасибо всем.
0
03.10.2013, 22:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 22:24

Цикл: найти минимальное значение функции на заданном отрезке
Найдите минимальное значение y = sin (x) * x, на отрезке с шагом 0,001, где...

Найти максимальное значение функции
Найти максимальное значение функции ...

Найти максимальное значение функции
Найти максимальное значение функции y = x sinx, на отрезке с шагом 0.001, где...


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

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

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