gpt4 book ai didi

c++ - S.E.M.F.物理C++代码

转载 作者:太空狗 更新时间:2023-10-29 19:43:23 26 4
gpt4 key购买 nike

需要一些帮助来解决这个程序的一个小问题。我创建了 S.E.M.F.在物理学中,C++ 计算公式一切都很棒,但我的学士学位。包含 a5 的公式。

它说错误:标识符“a5”未定义,我知道它是什么意思,但是如果我为我的 A Z 值输入偶数或偶数或奇数,我将如何从选择语句中获取 a5。

#include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

int main()
{
int A, Z;

// Main body of Semi-Empirical Mass Formula
cout <<"Enter the mass number A: ";
cin >> A;
cout <<"\n";
cout <<"Enter the atomic number Z: ";
cin >> Z;
cout <<"\n";

// Constants from formula, units in MeV(millions of electron volts)
double a1 = 15.67;
double a2 = 17.23;
double a3 = 0.75;
double a4 = 93.2;

if(Z % 2 == 0 && (A - Z) % 2 == 0)

double a5 = 12.0;

else if(Z % 2 != 0 && (A - Z) % 2 != 0)

double a5 = -12.0;

else

double a5 = 0;


// Formula for to compute the binding energy
double B =a1 * A - a2 * pow( A, 2/3) - a3 * (pow(Z, 2) / pow(A, 1/3)) - a4 * (pow(A - 2 * Z, 2) / A) + (a5 / pow(A, 1/2));

// Formula for to compute the binding energy per nucleon
double B_E = B / A;


return 0;

}

最佳答案

由于范围问题,a5 未定义。

因为您在 if -- else 语句的子句中声明 a5,所以该声明仅在声明它的语句内具有作用域。

要解决此问题,请在其范围扩展到您使用 a5 的后续语句的位置声明 a5:

double a1 = 15.67;          
double a2 = 17.23;
double a3 = 0.75;
double a4 = 93.2;
double a5 = 0.0;
//^ declare a5 here, it will be in scope when used in subsequent statements past the else clause


if(Z % 2 == 0 && (A - Z) % 2 == 0)

a5 = 12.0;

else if(Z % 2 != 0 && (A - Z) % 2 != 0)

a5 = -12.0;


// Formula for to compute the binding energy
double B =a1 * A - a2 * pow( A, 2/3) - a3 * (pow(Z, 2) / pow(A, 1/3)) - a4 * (pow(A - 2 * Z, 2) / A) + (a5 / pow(A, 1/2));

关于c++ - S.E.M.F.物理C++代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com