关于(C++)数据结构复数计算器作业的拓展


关于(C++)数据结构复数计算器作业的拓展

    复数计算器几乎是每个c++学习者都会遇到的一个典型的题目,但大多数的题解在处理复数的输入的时候都是将实部和虚部分开输入和存储,对于自己来说挺省事的,但对于使用者来说,比较局限,比较死板。为了实现输入的时候能够以复数的一般形式输入(即(-a,a,a-i,a-bi,a+bi,a+i,-i,i)形式输入,其中a,b为浮点数),对>>进行了以下重载。总体的思路是将输入的内容保存到一个空间较大的字符数组中,然后对其进行识别。(已经定义了一个复数类,a,b分别为复数的实部和虚部)识别分为两个部分,一个是识别只有实部的复数,另一个识别含有虚部的复数(其中包括只有虚部、实部和虚部都有)从左到右依次读取,以+、-、i以及无符号作为识别的标志。对于数字部分,整数部分采用自左向右累加,小数部分采用自右向左累加。以小数点“.”为标志。由于输入形式多样,需要逐步根据输出的情况逐步修改代码。这里并没有对错误的输入进行识别和相应的警示,需要可自行添加。
istream& operator >>(istream& is, Complex1& x)//输入任意形式的复数(-a,a,a-i,a-bi,a+bi,a+i,-i,i)
{
char m[100];
is >> m;
int a = strlen(m);
float n = 0;int flag = 1, j = 0, k;
if (m[a - 1] != 'i')//当复数只有实部,复数的形式为(a,-a)
{
if (m[0] == '-')
{
flag = -1;
j++;
}
else
{
flag = 1;
}
while ((m[j] >= '0' && m[j] <= '9') || m[j] == '.')//小数部分取值计算
{
int l;float o = 0;

if (m[j] == '.')
{
for (l = j; m[l] != '\0'; l++)
{
}
for (j = l-1; m[j] != '.'; j--)
{
o = o * 0.1 + m[j] - '0';
}
o = o * 0.1;
n = o + n;
j = l ;
break;
}
if (o == 0)
{
n = n * 10 + m[j] - '0';
j++;
}
}
x.a = n*flag;
return is;
}
else
{
for (j = 0; j < a;j++)
{
if (n != 0 && (m[j] == '-' || m[j] == '+'))
{
x.a = flag * n;
n = 0;
}
if (m[j] == '-')
{
flag = -1;
j++;
}
else if (m[j] == '+')
{
if (m[j] != 'i')
{
flag = 1;
j++;
}
}
else
{
if (m[j] != 'i')
{
flag = 1;
}
}
if (m[j] == 'i')
{
if (n == 0)
x.b = flag;
else
x.b = flag * n;
break;
}
while ((m[j] >= '0' && m[j] <= '9') || m[j] == '.')
{
int l; float o = 0;
for (l = j; m[l] != '-' && m[l] != '+'&&m[l]!='i'; l++)
{
}
if (m[j] == '.')
{
for (j = l-1; m[j] != '.'; j--)
{
o = o * 0.1 + m[j] - '0';
}
o = o * 0.1;
n = o + n;
j = l ;
break;
}
n = n * 10 + m[j] - '0';
j++;
}
--j;
}
}
}

第一次写博客,有不足的地方请多指教。
参考资料:(只是实现了a±bi的复数形式的识别)
C++课程设计复数计算器

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

关于(C++)数据结构复数计算器作业的拓展

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 关于(C++)数据结构复数计算器作业的拓展
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏