C++ 模糊逻辑循环在第一次输入后递增

标签 c++ fuzzy-logic

我编写了我的第一个模糊逻辑程序,第一个输入通过输出正确的电压值完美地完成了它的工作。电压一词严格来说是一个占位符。它完全符合我的数学。之后的任何值都会增加最终输出,并且在我重置程序之前永远不会再次工作,在此之后,它会做同样的事情。

我会尽量简化我的代码。

int main()
{
int InputDistance;
double BetweenDistance1;
double BetweenDistance2;
double DoM1;
double DoM2;
double OutputComponent1;
double OutputComponent2;
double CrispOutput;
bool NN = false;
bool N = false;
bool Z = false;
const double NNVolt (0);
const double NVolt (2.25);
const double ZVolt (4.5);
for(;;)
{
        cout <<  "What is the distance?" << endl << endl;
        cin >> InputDistance;
        cout << endl;
        if(InputDistance > 0 && InputDistance <= 5)
        {
            BetweenDistance1 = InputDistance - 0;
            BetweenDistance2 = 5 - InputDistance;
            NN = true;
            N = true;
        }
        if(InputDistance > 5 && InputDistance <= 10)
        {
            BetweenDistance1 = InputDistance - 5;
            BetweenDistance2 = 10 - InputDistance;
            NN = true;
            N = true;
        }
        if(InputDistance > 10 && InputDistance <= 15)
        {
            BetweenDistance1 = InputDistance - 10;
            BetweenDistance2 = 15 - InputDistance;
            N = true;
            Z = true;
        }
        if(InputDistance > 15 && InputDistance <= 20)
        {
            BetweenDistance1 = InputDistance - 15;
            BetweenDistance2 = 20 - InputDistance;
            N = true;
            Z = true;
        }

        DoM1 = BetweenDistance1 / 5;
        DoM2 = BetweenDistance2 / 5;

        if(NN == true && N == true)
        {
            OutputComponent1 = NNVolt * DoM1;
            OutputComponent2 = NVolt * DoM2;
        }
        if(N == true && Z == true)
        {
            OutputComponent1 = NVolt * DoM1;
            OutputComponent2 = ZVolt * DoM2;
        }
        CrispOutput = OutputComponent1 + OutputComponent2;

        cout << "Voltage = " << CrispOutput << endl << endl;
    }
    return (0);
}

每次我输入新的距离值时,是什么导致值增加?我看不到它。

最佳答案

您永远不会重置您的bool

bool NN = false;
bool N = false;
bool Z = false;

应该在 for 循环的开头,以便每次循环时重置它们。

根据经验,您将在循环中使用的任何变量都应在循环中声明,除非您需要在循环范围之外访问它。

关于C++ 模糊逻辑循环在第一次输入后递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564259/

相关文章:

C++ 模板与继承

C++ 错误;我应该如何解释它的含义?

c++ - Eigen,如何访问 MatrixBase<Derived> 的底层数组

matlab - 你如何解决 "undefined function or variable ' mamfis'”?

c++ - 在 Visual Studio 2010 中使用 fuzzylite

c++ - 在编译时使用给定函数初始化普通二维数组

Python pandas 模糊逻辑

java - Duke重复数据删除引擎: exact same record not matched

c++ - 如何获取包含NULL字符的shellcode字符串的长度