if 语句运行时错误

if statement runtime error

本文关键字:运行时错误 语句 if      更新时间:2023-10-16

我最初有3个方程:Pu,Pm和Pd。它运行良好。一旦我引入了 if 语句,根据循环迭代,3 个方程的变化,我收到运行时错误。任何帮助将不胜感激。

提前干杯。

#include <cmath>
#include <iostream>
#include <vector>
#include <iomanip>

int Rounding(double x)
{
    int Integer = (int)x;
    double Decimal = x - Integer;
    if (Decimal > 0.49)
    {
        return (Integer + 1);
    }
    else
    {
        return Integer;
    }
}
int main()
{
double a = 0.1;
double sigma = 0.01;
int delta_t = 1;
double M = -a * delta_t;
double V = sigma * sigma * delta_t;
double delta_r = sqrt(3 * V);
int count;
double PuValue;
double PmValue;
double PdValue;
int j_max;
int j_min;
j_max = Rounding(-0.184 / M);
j_min = -j_max;
std::vector<std::vector<double>> Pu((20), std::vector<double>(20)); 
std::vector<std::vector<double>> Pm((20), std::vector<double>(20)); 
std::vector<std::vector<double>> Pd((20), std::vector<double>(20)); 
std::cout << std::setprecision(10); 
for (int i = 0; i <= 2; i++)
    {
        count = 0;
        for (int j = i; j >= -i; j--)   
            {
                count = count + 1;
                if (j = j_max) // Exhibit 1C
                {   
                    PuValue = 7.0/6.0 + (j * j * M * M + 3 * j * M)/2.0;
                    PmValue = -1.0/3.0 - j * j * M * M - 2 * j * M;
                    PdValue = 1.0/6.0 + (j * j * M * M + j * M)/2.0;
                }   
                else if (j = j_min) // Exhibit 1B
                {   
                    PuValue = 1.0/6.0 + (j * j * M * M - j * M)/2.0;
                    PmValue = -1.0/3.0 - j * j * M * M + 2 * j * M;
                    PdValue = 7.0/6.0 + (j * j * M * M - 3 *  j * M)/2.0;
                }   
                else
                {
                    PuValue = 1.0/6.0 + (j * j * M * M + j * M)/2.0;
                    PmValue = 2.0/3.0 - j * j * M * M;
                    PdValue = 1.0/6.0 + (j * j * M * M - j * M)/2.0;
                }
                Pu[count][i] = PuValue;
                Pm[count][i] = PmValue;
                Pd[count][i] = PdValue;
                std::cout << Pu[count][i] << ", ";
            }
        std::cout << std::endl;
    }
return 0;
}

您正在分配而不是检查 equal: j_max 以在 if 语句中j

if (j = j_max)
//    ^
else if (j = j_min)
//         ^


if (j = j_max)更改为if (j == j_max)
else if (j = j_min) else if (j == j_min).

更正以下if条件检查和if检查的所有其他实例

if(j=j_max)
with 
if (j == j_max)

您正在检查未分配的相等性。

你的代码进入了一个无限循环。