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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
#1

C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x - C++

03.10.2013, 21:32. Просмотров 2014. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x (C++):

Найти максимальное и минимальное значение функции на отрезке - C++
Для заданной функции f=x2(x-3) найти максимальное и минимальное значение функции на отрезке с точностью ∆x=h., a=5, b=15, ∆x = 0.5. ...

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

Найти значение функции на отрезке - C++
Подскажите пожалуйста как записать через if интервал выделенный на рисунке, чему y=? Спасибо заранее

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

Найти максимальное значение функции - C++
Найти максимальное значение функции y = x sinx, на отрезке с шагом 0.001, где значения параметров a и b заданы с клавиатуры. Преподу не...

Найти максимальное значение функции - C++
Найти максимальное значение функции t=(((a!-b!)*x+sin2(a!*x))/(b!+2tan(a*sqrt(b)))*cos(3*x) на интервале значений аргумента X –...

9
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
03.10.2013, 21:43 #2
непонятно зачем функция sravnenie если есть функция min() и max(). И в любом случае в функции sravnenie циклы не нужны
0
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,401
Завершенные тесты: 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 / 3
Регистрация: 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
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
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 / 3
Регистрация: 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
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 22:24
Привет! Вот еще темы с ответами:

Найти максимальное и минимальное значение функции - C++
Просьба решить задачку, так как я сам ни бум бум...=( А через пару недель нужно перездать зачет. Очень прошу помочь!! Составить...

Найти максимальное значение функции методом итерации - C++
Найти максимальное значение функции методом итерации . Как вообще это сделать? Если можно написать код к этому y = x^2 / sqrt(2+ln(x))

Оброботка одномерных массивов (Вычислить m значений функции f(x) на отрезке [a, b], найти элементы, среднее значение) - C++
Составить программу решения поставленной задачи: 1. Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) с оформить...

Вычислить значение функции f (x) на отрезке [a, b] - C++
Здравствуйте, очень нужна помощь. Еще пока плаваю в С++. Пользуюсь Code Blocks 10.05 Вычислить значение функции f(x) на отрезке . ...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
03.10.2013, 22:24
Ответ Создать тему
Опции темы

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