smi*_*mba 0 c++ compiler-errors token
我是C++的新手,我正在尝试制作一个"计算器":添加两个数字,减去两个数字,乘以两个数字,除以两个数字,取一个数字的正弦,取一个数字的余弦,或者取一个数的正切值.这是代码:
#include <iostream>;
#include <cmath>;
#include <string>
int main ()
{}
int ask(std::string operation);
{
std::cout<<"Type Addition, Subtraction, Multiplication, Division, Sine, Cosine, or Tangent:\n";
std::cin>>operation;
if (operation="Addition")
{
goto Add
}
float Add(float addend1, float addend2, float answer)
{
Add:
std::cout<<"Insert the first number to be added:\n";
std::cin>>addend1;
std::cout << "Insert the second number to be added:\n";
std::cin>>addend2;
answer=addend1+addend2;
std::cout<<addend1<<"+"<<addend2<<"="<<answer<<"\n";
break
}
}
Run Code Online (Sandbox Code Playgroud)
稍后会有更多功能,但我的问题在第7行.有一个错误说明:在"{"标记之前的预期unqualified-id.我知道我的缩进很糟糕,但谢谢!
您的代码中存在很多问题.
首先,正如Ivan指出的那样,您正在尝试在函数内部定义函数(ask()内部main()).那是无效的.
其次,你有一个goto(为什么?!)试图跳转到另一个函数的标签.我怀疑你的编译器是否会允许这样做,但是你希望它如何工作呢?您正在尝试使用传递给函数的变量,这些变量addition不存在,因为您从未调用该函数,并且从未为其设置过堆栈.这很糟糕,不要这样做,只需正确调用该功能即可.
第三,#include预处理程序指令以换行符结束,而不是分号.这可能会导致一些(相对)难以追踪编译错误.
第四,你错误地尝试分配const char* "Addition"到operation时你的意思来使用是平等的运营商==.但这不会起作用,因为它operation是一个r值,不能像那样分配.如果你想修改它,你需要将它声明为一个指针,但再一次,这不是你在语义上的意义......
如果你想比较字符串和(无论出于何种原因......)意图使用指向char的指针,那么你应该使用strcmp.也就是说,你在C++的土地,所以只需使用std:string.
尝试这样的事情.无论如何我还没有增强你的代码,只是做了一些可以编译和运行的代码.我做了一些改变.
除了摆脱一些语法错误之外,您的原始Add函数将结果作为float参数.从函数中分配给它只会修改副本.如果希望调用者看到修改后的值,则需要使用指针或引用,但根本不需要它,因为您只需返回结果即可.
字符串比较区分大小写,因此您可能希望将其更改为不区分大小写.我假设没有本地化:) 我也没有对输入执行错误检查,因此请注意,如果用户输入的内容不是有效的浮点数,它可能会失败.
#include <iostream>
#include <string>
using namespace std;
void Ask();
float Add( float, float );
int main( size_t argc, char* argv[] )
{
Ask();
return 0;
}
void Ask()
{
cout << "Type Addition, Subtraction, Multiplication, Division, Sine, Cosine, or Tangent:\n";
string operation;
cin >> operation;
if( operation == "Addition" )
{
float first = 0, second = 0;
cout << "enter first operand";
cin >> first;
cout << "enter second operand";
cin >> second;
cout << "The result is: " << Add( first, second );
}
}
float Add( float first, float second )
{
return first + second;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17581 次 |
| 最近记录: |