计算器程序中的错误

Errors in the calculator program

本文关键字:错误 程序 计算器      更新时间:2023-10-16

我正在使用一个程序,该程序将计算地球表面两个地理点之间的距离。我是C++的新手,如果我的英语不好,我很抱歉

关于如何将底部程序的内容转换为顶部程序而不会出错,有什么建议吗?

这个程序不起作用。

   #include <iostream>
   #include <cstdio>
   #include <cmath>
   using namespace std;
    int main ()
    double getdistance(double x1,double y1,double x2,double y2)
    {
        const double PI = 3.1415927; 
        double radius, sum; 
        int exit = 1;
        char choice;
        while (exit == 1)
    {
        cout    << "**** Calculate Program **** nn"
                << "1. Volumen"
                << "2. Divn"
                << "3. Calculate two geographical pointsn"
                << "4. Workingnn"
                << "5. Quit programnn";
        cout    << "Choose one of the options and write it here: "; 
        cin     >> choice; 
switch (choice) 
    {
    // 
    case '1':   
        float volume (float radius);               
    {
            cout << "radius you want to calculate: " << endl;
            cin >> radius;
            sum = 4.0/3.0 * PI * pow (radius, 3);
            cout << "Volume: " << sum << endl;
    }
    break;

    // 
    case '2':   
        cout<<"div n"; 
            break;
    // 
    case '3':   
        radius=6371; // radius km
        double pi=3.14159265;
        double x1,y1,x2,y2;
        // X og Y coords
            x1=(x1/180)*pi; 
            y1=(y1/180)*pi;
            x2=(x2/180)*pi;
            y2=(y2/180)*pi;
         // if else
            if (x1==x2 && y1==y2)
            return 0;
            else
        {
            if ((sin(x2)*sin(x1)+cos(x2)*cos(x1)*cos(y2-y1))>1)
             return radius*acos(1.0);
            else
            return radius*acos(sin(x2)*sin(x1)+cos(x2)*cos(x1)*cos(y2-y1));

            // 
            double x1,y1,x2,y2;
            cout<<"Write the coords you like to calculate distance from: n";
            cin>>x1>>y1;
            cin>>x2>>y2;
            cout<<"distance in km : n";
            cout<<getdistance(x1,y1,x2,y2)<<endl;
            return 0;
        }
    break;

    case '4':   
        cout<<"working n"; 
    break;

    // 
    case '5':   
            exit = 0;
    break;
    default: 
            exit = 0;
            cout << "ERROR!";
     }  // Switch quit
} // While quit
return 0;
}

这是一个有效的程序,但我必须把它放在上面程序的案例3中。

# include <iostream>
# include <cstdio>
# include <cmath>
using namespace std;
double getdistance(double x1,double y1,double x2,double y2)
{
    double radius;
    radius=6371; // radius km
    double pi=3.14159265;
    // X og Y coord
    x1=(x1/180)*pi; 
    y1=(y1/180)*pi;
    x2=(x2/180)*pi;
    y2=(y2/180)*pi;

    if (x1==x2 && y1==y2)
        return 0;
    else
    {
       if ((sin(x2)*sin(x1)+cos(x2)*cos(x1)*cos(y2-y1))>1)
           return radius*acos(1.0);
       else
           return radius*acos(sin(x2)*sin(x1)+cos(x2)*cos(x1)*cos(y2-y1));
    }
}
int main()
{
    double x1,y1,x2,y2;
    cout<<"Write the coords you like to calculate distance from: n";
    cin>>x1>>y1;
    cin>>x2>>y2;
    cout<<"distance in km : n";
    cout<<getdistance(x1,y1,x2,y2)<<endl;
    return 0;
}

程序看起来很好。至于switch语句,它们只适用于整数或单字符值。switch不比较字符串或浮点数。也许公布备选方案的完整代码将有助于识别问题。

编辑

int main ()
double getdistance(double x1,double y1,double x2,double y2)
{

这是错误的。当您声明函数时,您必须在main之前声明它们,并在main之前或之后定义它们,尽管传统上您会在之后定义它们。

//#include directives
double getdistance(double x1,double y1,double x2,double y2);
int main() {
// code for main()
}
double getdistance(double x1,double y1,double x2,double y2) {
//code for your function
}