Ошибки в программе калькулятора

Я работаю с программой, которая рассчитает расстояние между двумя географическими точками на поверхности Земли. Я довольно новичок в 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 **** \n\n"<< "1. Volume\n"<< "2. Div\n"<< "3. Calculate two geographical points\n"<< "4. Working\n\n"<< "5. Quit program\n\n";

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;
}

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
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]