这可能很容易理解,但出于某种原因,我无法在任何地方找到解决方案。也许我不是在寻找合适的东西。也许它是在一些初学者教程中我没有看过。
无论如何,我想知道如何在C ++中检索整数变量的值?我知道你可以使用cin.getline()
作为字符串变量,但是当我尝试使用整数变量时,我收到了一条错误消息(理所当然,我知道这是错误的,但我正在寻找解决方案)。
我的项目是Win32控制台应用程序。我要做的是要求用户输入存储在变量n
中的数字。然后我取n
的值并用它执行各种数学函数。在我的标头文件中,我有string
,windows
,iostream
,stdio
,math
和fstream
。我需要添加另一个库吗?
修改
cout << "TEST SINE";
cout << "\nPlease enter a number.\n\n";
cin >> n;
break;
这是我正在尝试使用的代码。这就是我需要做的吗?如果是这样,我如何合并变量,以便我可以使用sin,cos和tan?
进行测试然而,再次提前谢谢。
答案 0 :(得分:5)
这有什么问题?
cin>>n;
对于数学函数,float或double是更好的选择。
int main()
{
double number;
double result;
cout<<"Enter a number:"<<endl;
cin>>number;
result = sin (number); //if you consider number is in radians
//result = sin(number*3.14159265/180.0) //if you consider number is in degrees
cout<<result;
return 0;
}
答案 1 :(得分:3)
如果需要整数,可以使用:
cin >> n;
但如果您想要一个强大的应用程序,最好控制输入数据。
也许更好的想法是将它作为字符串输入,因为您已经知道如何处理getline()
,然后在调用转换函数atoi()
之前验证字符串是否包含所有数字字符或strtol()
。
这样,您可以获得强大的输入以及您想要的数据类型。
但是,如果你想使用三角函数,你最好使用atof()
而不是整数来处理双精度。
这是一个让您入门的示例程序:
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std;
int main (void) {
char s[256];
// Get and check line.
cout << "Enter angle in degrees: ";
cin.getline(s,100);
for (char *ps = s; *ps != 0; ps++) {
if (!isdigit (*ps)) {
cout << "Not numeric" << endl;
return 1;
}
}
// Output string, float, sine and cosine (convert to radians first).
float f = atof (s);
cout << "String : '" << s << "'" << endl;
cout << "Float : " << f << endl;
f = f * 3.141592653589 / 180.0;
cout << "Sine : " << fixed << sin (f) << endl;
cout << "Cosine : " << fixed << cos (f) << endl;
return 0;
}
示例运行如下所示:
Enter angle in degrees: 30
String : '30'
Float : 30
Sine : 0.500000
Cosine : 0.866025
Enter angle in degrees: 45
String : '45'
Float : 45
Sine : 0.707107
Cosine : 0.707107
Enter angle in degrees: 90
String : '90'
Float : 90
Sine : 1.000000
Cosine : -0.000000 (caused by floating point inaccuaracy).