我试图以char或string的形式从用户那里获取复数输入,如: 88.90-55.16i或-3.67 + 5i
然后将其转换为float,保持与上面相同的格式。不是(x,y)。
char user[100];
vector < float > V;
for (int y = 0; y < 5; y++)
{
cout << "Enter a complex number:" << endl;
cin >> user;
float newfloat = atof(user);
cout << newfloat << endl;
}
目前它没有转换整数。从上面的输入示例中只有88或-3。
答案 0 :(得分:2)
您需要将复数的实部和虚数组件存储在单独的float
变量中,这些变量可能会也可能不会使用struct
/ class
或{{1 }}。输入应该是这样的:
std::pair<>
(FWIW,这显然与this earlier question有关 - 使用新用户名的同一个人,或者做同一作业的人。我在答案中使用std::cout << "Enter a complex number:\n";
float real, imaginary;
char i;
if (std::cin >> real >> imaginary >> i && i == 'i')
{
...do something with real & imaginary...
}
else
{
std::cerr << "unable to parse input as a complex number\n";
exit(1);
}
提供示例程序。 )
答案 1 :(得分:2)
Float无法存储该类型的号码。浮点数被设计为保持单个浮点数,即10.3或5.2。不是1 + 2i。这是一个二维数量。
我建议您使用complex<float>
模板作为数据类型或创建自己的类。在这里查看更多信息:https://msdn.microsoft.com/en-us/library/5de6f0bw.aspx关于complex<float>
它附带了内置工具,可将字符串转换为复杂类型。
答案 2 :(得分:1)
我之前从未使用过C ++,但我确信浮动不符合您的期望。虚数不是浮点数的子集,所以你不能这样做。
我想一个可能的解决方案是编写自己的虚构类,或者如果有的话,可以使用内置类。
还要在自定义虚构类中编写fromString()/ toString()。