Неправильно отображается элемент

160
27 февраля 2019, 10:40

Нужно найти максимум и минимум функции при 3 параметрах. При первых 2х выводится правильно, в 3 почему-то появляются другие числа. Пробовала переставлять местами - не получилось. Может ошибка в синтаксе? И почему если первый getch убрать, то переключается с 1 параметра сразу на 3? Работаю в VS 2017

*

#include <stdio.h> 
#include <conio.h> 
#include <math.h> 
#include <iostream> 
using namespace std;
//программа табулирования функции 
//Y = 2.2*x - A^X, 0.5< = x <= 2, 1 <= A <= 3 
int main()
{
    setlocale(LC_ALL, "Rus");
    double x = 0.5, y, ymax, xmax, ymin, xmin, a;
    for (int A = 1; A <= 3; A++) 
    {
        _getch();
        y = 0.0;
        ymax = 0.0;
        xmax = 0.0;
        ymin = 0.0;
        xmin = 0.0;
        a = 0.0;
        x = 0.0;
        system("cls");
        printf("при А=%1d", A);
        printf("\n");
        a = 2.2*x - pow(A, x);
        for (x = 0.5; x <= 2; x += 0.5)
        {
            y = 2.2*x - pow(A, x);
            printf("при х = %5.2f y = %5.2f\n", x, y);
            if (y > a) {
                a = y;
                xmax = x;
            }
         }
        printf("при х max %5.2f y max = %5.2f\n", xmax, a);
        a = 2.2*x - pow(A, x);
        for (x = 0.5; x <= 2; x += 0.5) {
            y = 2.2*x - pow(A, x);
            if (y < a) { 
                a = y;
                xmin = x;
            }
        }
        printf("при х min %5.2f y min = %5.2f\n", xmin, a);
        _getch();
    }
}

*

Answer 1

Пропущено восстановление значения х в начальное значению интервала перед поиском минимума:

    ...
    x = 0.5;
    a = 2.2*x - pow(A, x);
    for (x = 0.5; x <= 2; x += 0.5)
    {
        y = 2.2*x - pow(A, x);
        printf("при х = %5.2f y = %5.2f\n", x, y);
        if (y > a) {
            a = y;
            xmax = x;
        }
    }
    printf("при х max %5.2f y max = %5.2f\n", xmax, a);
    x = 0.5; // !!!
    a = 2.2*x - pow(A, x);
    for (x = 0.5; x <= 2; x += 0.5) {
        y = 2.2*x - pow(A, x);
        if (y < a) { 
            a = y;
            xmin = x;
        }
    }
    printf("при х min %5.2f y min = %5.2f\n", xmin, a);
    ...
READ ALSO
C++ Как создать таймер?

C++ Как создать таймер?

Как создать таймер в C++? Пробовал SetTimer с USER_TIMER_MINIMUM но он медленный, нужен таймер с интервалом больше 60 раз в секунду

185
c++ перемещение и неизменяемый класс

c++ перемещение и неизменяемый класс

Я хочу разобраться в следующей ситуации

194
std::vector и emplace_back()

std::vector и emplace_back()

Правильно ли я понимаю, что метод std::vector::emplace_back() вызывает конструктор, но не конструктор перемещения?

178