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

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

Войти
Регистрация
Восстановить пароль
 
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
#1

решение с простой переменной - C++

30.07.2010, 21:35. Просмотров 594. Ответов 4
Метки нет (Все метки)

Добрый вечер
Задание прикреплено ниже, если кому не трудно посмотрите пожалуйста.
В 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
#include <stdafx.h>
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    int a(1), b(2);
    float x, y, z;
    for (x=0; x<=1; x+=.1)
    for (y=0; y<=1; y+=.2)
    {
        if (x+y<=1)
        {
            z=pow(a,x)+pow(b,y);
            cout<<"x="<<fixed<<setprecision(2)<<x<<"   y="<<y<<"   z="<<z<<endl;
        }
        else  
        {
            z=a*pow(x,2)+log(b*x*y);
            cout<<"x="<<x<<"   y="<<y<<"   z="<<z<<endl;
        }
        
    }
    cin.get();
}
Да простят меня модераторы, толком не знаю как задать вопрос. Просто хочу услышать мнение разбирающихся людей правильно ли работает программа (вернее она то работает но то ли выполняет, или как там)..
Во втором задании код написал:
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
#include <stdafx.h>
#include <сmath>
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    float x,y;
    for (x=-2.5; x<=2; x+=.5)
    {
        if (x>=-2.5 && x<-2)
        {
            y=(fabs(x)+pow(x,2))*sin(pow(2+x,2))/(2+x);
            cout<<"x="<<fixed<<setprecision(2)<<x<<"   y="<<y<<endl;
        }
        else if (x>-2 && x<=2)
        {
            y=(fabs(x)+pow(x,2))*sin(pow(2+x,2))/(2+x);
            cout<<"x="<<x<<"   y="<<y<<endl;
        }
        else cout<<"x="<<x<<"   FATAL ERROR"<<endl;
    }
    cin.get();
}
Вот как найти при каком значении (x) функция будет наименьшей не знаю. Разберусь быстро, скажите идею просто пожалуйста...
Миниатюры
решение с простой переменной  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2010, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос решение с простой переменной (C++):

Решить систему с простой переменной - C++
Помогите решить систему с простой переменной... Надо найти x, заранее спс=)

Решение уравнения методом простой итерации - C++
День добрый. Мне необходимо решить уравнение x-10cos(x)=0 разным методами и с методом простой итерации возникла проблема. Однако мой...

Решение нелинейных уравнений методом простой итерации - C++
Реализовать заданный алгоритм для уравнения x^3+x^2-1=0, решив уравнение с заданной пользователем точностью на с++. Помогите пожалуйста не...

Решение нелинейного уравнения методом простой итерации - C++
Помогите, пожалуйста! Нужно разработать программу для решения нелинейного уравнения методом простой итерации. Я код написала, но корни...

Решение нелинейных уравнений методом простой итерации - C++
Решение нелинейных уравнений методом простой итерации. Реализовать заданный алгоритм для уравнения , решив уравнение с заданной...

Решение методом Рунге - Кутта. Переполнение переменной - C++
Все формулы применил как из учебника. Методы Эйлера работают, а метод Рунге - Кутта не табулируется полностью и программа вылетает....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
31.07.2010, 01:40  [ТС] #2
C 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
#include "stdafx.h"
#include <сmath>
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{   int a(1), b(2);
    float x, y, z;
    for( x=1; x<=2; x+=.1)
    {
        cout<<endl;
        for ( y=1; y<=2; y+=.2)
        
            if (x+y<=1)
            {
            z=pow(a,x)+pow(b,x);
            cout<<"x="<<fixed<<setprecision(2)<<x<<"  y="<<y<<"  z="<<fixed<<setprecision(4)<<z<<endl;
            }
            else 
            {
            z=a*pow(x,2)+log(b*x*y);
            cout<<"x="<<fixed<<setprecision(2)<<x<<"  y="<<y<<"  z="<<fixed<<setprecision(4)<<z<<endl;
            }
        
    }
    cin.get();
}
А вот че делать со 2 условием 2 задачи
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
31.07.2010, 03:08 #3
продиффиренцируй функцию, приравняй к нулю полученное уравнение, вырази икс через все остальное, посчитай икс, подставь полученнй икс в исходное уравнение и посчитай игрик, от і буде тобі точка. Если таких точек несколько, то надо выбрать ту у которой игрик меньше всех, соответственно её икс и есть ответ. Как с модулем быть лично я не знаю, но думаю что стоит разбить на два варианта: при положительном подмодульном выражении и при отрицательном.
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
31.07.2010, 11:56  [ТС] #4
Есть вот такой рабочий код - он то что нужно, но не то что нужно Просто попробую с ним разобраться должно быть что то попроще.. В этой задаче подразумевается решение без классов (до них мне еще далеко)
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
#include <stdafx.h>
#include <cmath>
#include <iostream>
 
class Error{};
 
float calculateY( const float x ){
    if( ( x >= -2.5 && x < -2 ) || ( x > - 2 && x <= 2 ) )
    return ( std::fabs( x ) + std::pow( x, 2 ) ) * std::sin( std::pow( 2 + x, 2 ) )/( 2 + x );
    throw Error();
}
 
int main(){
    float min = calculateY( -2.5 );
    float minX = -2.5;
    for (float x = -2.5; x <= 2; x += 0.5){
    float y;
    try{
        y = calculateY( x );
    } catch( Error ) {
        std::cout << "ERROR : x = " << x << '\n';
        continue;
    }
    if( min > y ){
        min = y;
        minX = x;
    }
    std::cout << "x = " << x << " y = " << y << '\n';
    }
    std::cout << "MIN : " << min << " MINX : " << minX << '\n';
}
За совет вам спасибо, попробую решить

Добавлено через 1 час 23 минуты
Подумал, вроде разобрался Если кому вдруг интересно вот код 2 задания 2 задачи:
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 <stdafx.h>
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    float x,y,xmin,ymin;
    short flag=0;
    for (x=-2.5; x<=2; x+=.5)
        if (x==-2)
            cout<<"x="<<fixed<<setprecision(1)<<x<<"   FATAL ERROR"<<endl;
        else 
        {   
            y=(fabs(x)+pow(x,2))*sin(pow(2+x,2))/(2+x);
            cout<<"x="<<fixed<<setprecision(1)<<x<<"   y="<<fixed<<setprecision(6)<<y<<endl;
            if (!flag)
            {
                xmin=x;
                ymin=y;
                flag=1;
            }
            else
                if (y<ymin) 
                {
                    xmin=x;
                    ymin=y;
                }
        }
    cout<<"\n for x="<<fixed<<setprecision(1)<<xmin<<" ymin="<<fixed<<setprecision(6)<<ymin<<endl;
    cin.get();
}
Nameless One
31.07.2010, 18:36     решение с простой переменной
  #5

Не по теме:

В качестве флага ИМХО лучше бы использовать не целый тип (short), а логический (bool)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2010, 18:36
Привет! Вот еще темы с ответами:

Метод чисел Фибоначчи. Вывести решение в виде численного значения в точке экстремума независимой переменной - C++
Написать программу которая должна выводить решение в виде численного значения в точке экстремума независимой переменной (x экстр.) и...

a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b - C++
даны произвольные числа a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b.

Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С - C++
Массив С действительных чисел имеет 5 строк и 11 столбцов. Присвоить значение наименьшего элемента массива переменной М1, номер строки, где...

Получить доступ к переменной класса при наличии такого же имени переменной в функции - C++
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в конструкторе этого класса. И мне нужно...


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

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

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