我的程序无法编译

My programm cannot compile

本文关键字:编译 程序 我的      更新时间:2023-10-16
$ g++ -o arbitrage arbitrage_sportsbetting_calc.cpp
arbitrage_sportsbetting_calc.cpp: In function ‘double what_do_you_want_to_do(int)’:
arbitrage_sportsbetting_calc.cpp:24:34: error: ‘arbitrage_two_diff_odds’ was not declared in this scope
arbitrage_two_diff_odds(a, b, c);
^

请帮帮我。 上面的错误是我得到的。

/*Programm for making decision on arbitrage betting*/

#include <iostream>
//using namespace ::std;
//Prompting user to select an option.
double what_do_you_want_to_do(int z){
double a, b, c;
std::cout << "What do you want to do" << std::endl;
std::cout << "For calculating Percentage & Profit for a single bet, PRES 1" << std::endl;
std::cout << "For calculating Arbitrage Percentantage & Profit for two odds, PRESS 2" << std::endl;
std::cout << "For calculating Arbitrage Percentantage & Profit for three odds, PRESS 3" << std::endl;
std::cin  >> z;
//Using switch to branch.
switch(z)
{
case 1:
//call function 1
break;
case 2:
//call function 2
if (z == 2)
arbitrage_two_diff_odds(a, b, c);
break;
case 3:
//call function 3
break;
}
}
//function for calculation of the arbitrage for two different odds.
double arbitrage_two_diff_odds(double a, double b, double c){
//Prompting user for imput.
std::cout << "Enter your values in this format "1st odd, 2nd odd, investment": ";
std::cin  >> a >> b >> c;
//Calculating the sum of the percentage of the two different odds.
double diff_two_odds = ((1/a)*100) + ((1/b)*100);
//maniplation
if (diff_two_odds <= 90)
{
double calc_profit = c/diff_two_odds;
double idividual_bet1 = (c*((1/a)*100))/diff_two_odds;
double idividual_bet2 = (c*((1/b)*100))/diff_two_odds;
std::cout << "The arbitrage odds you put in are "<<a<< "and"<<b<<"."<< std::endl;
std::cout << "The percentage gain for individual odd are "<<((1/a)*100)<<"% and "<<((1/b)*100)<<"% respectively."<<std::endl;
std::cout << "The individual bet for your propose investment are "<<idividual_bet1<<"$ for "<<a<< "and "<<idividual_bet2<<"$ for "
<<b<< "respectively, which equals "<<c<<"."<<std::endl;
std::cout << "From your proposed investment of "<<c<<"$, Your arbitrage profit is "<<calc_profit<< std::endl;       
}
else
std::cout << "No profit for the odds entered, try different one again"<< std::endl;
std::cout << "No profit for the odds entered, try different one again"<< std::endl;
}
int main()
{
int z = what_do_you_want_to_do(z);
}

由于 c++ 源文件是从上到下编译的,因此在what_do_you_want_to_do中使用之前不会声明arbitrage_two_diff_odds(a, b, c);
要修复此声明arbitrage_two_diff_odds(a,b,c(;就在what_do_you_want_to_do之前.

正如@Eduard所说arbitrage_two_diff_odds(a, b, c)仅在使用后声明,因此编译器不知道此函数。您应该在使用之前声明它。

通过将行double arbitrage_two_diff_odds(double a, double b, double c)放在 main 或使用它的函数之前,在使用函数之前声明函数(通常函数的定义放在#include和全局变量声明之后。

您可以将实现保留在原处。

下次请正确缩进代码。这是一团糟,否则其他人很难理解。

/*Programm for making decision on arbitrage betting*/
#include <iostream>
//using namespace ::std;

//functions declaration generally goes here
double arbitrage_two_diff_odds(double a, double b, double c); //<-----MISSING LINE

//Prompting user to select an option.
double what_do_you_want_to_do(int z){
double a, b, c;
std::cout << "What do you want to do" << std::endl;
std::cout << "For calculating Percentage & Profit for a single bet, PRES 1" << std::endl;
std::cout << "For calculating Arbitrage Percentantage & Profit for two odds, PRESS 2" << std::endl;
std::cout << "For calculating Arbitrage Percentantage & Profit for three odds, PRESS 3" << std::endl;
std::cin  >> z;
//Using switch to branch.
switch(z)
{
case 1:
//call function 1
break;
case 2:
//call function 2
if (z == 2)
arbitrage_two_diff_odds(a, b, c);
break;
case 3:
//call function 3
break;
}
}
//function for calculation of the arbitrage for two different odds.
double arbitrage_two_diff_odds(double a, double b, double c){
//Prompting user for imput.
std::cout << "Enter your values in this format "1st odd, 2nd odd, investment": ";
std::cin  >> a >> b >> c;
//Calculating the sum of the percentage of the two different odds.
double diff_two_odds = ((1/a)*100) + ((1/b)*100);
//maniplation
if (diff_two_odds <= 90)
{
double calc_profit = c/diff_two_odds;
double idividual_bet1 = (c*((1/a)*100))/diff_two_odds;
double idividual_bet2 = (c*((1/b)*100))/diff_two_odds;
std::cout << "The arbitrage odds you put in are "<<a<< "and"<<b<<"."<< std::endl;
std::cout << "The percentage gain for individual odd are "<<((1/a)*100)<<"% and "<<((1/b)*100)<<"% respectively."<<std::endl;
std::cout << "The individual bet for your propose investment are "<<idividual_bet1<<"$ for "<<a<< "and "<<idividual_bet2<<"$ for "
<<b<< "respectively, which equals "<<c<<"."<<std::endl;
std::cout << "From your proposed investment of "<<c<<"$, Your arbitrage profit is "<<calc_profit<< std::endl;
}
else
std::cout << "No profit for the odds entered, try different one again"<< std::endl;
std::cout << "No profit for the odds entered, try different one again"<< std::endl;
}
int main()
{
int z = what_do_you_want_to_do(z);
}