2 qq 33691951 qq_33691951 于 2016.04.07 00:49 提问

怎么将a+bi形式的字符串转变成复数呢
c#

怎么将a+bi形式的字符串转变成复数呢这是我的转换的代码,这样错不知道怎么改了,待大神指教图片图片

4个回答

herozhangbz
herozhangbz   2016.04.07 10:22
已采纳

你写是个啥写这么多都没用,你用int i = s.IndexOf("+", 0);就能找到+所在的索引,楼上的回答很简洁实用。string操作并不只是substring,你直接用split('+')就能把你的字符串分成两个部分就是实部和虚部i。你再split('i')[0]或者replace('i',"")用空格填充然后trim格式化去掉空格。

            string s = "123+5i";
            double real, image;
            real = double.Parse(s.Split('+')[0]);
            image = double.Parse(s.Split('+')[1].Split('i')[0]);
            Complex cop = new Complex(real, image);

你用substring也能弄出来

           string s = "123+5i";
            double real, image;
            real = double.Parse(s.Substring(0, s.IndexOf('+')));
            image = double.Parse(s.Substring(s.IndexOf('+'),s.Length - 1 - s.IndexOf('+')));

看着麻烦还容易出错

herozhangbz
herozhangbz 回复qq_33691951: 有点没有看懂你的意思,a+bi这里的ab都是实数,也就是ab可以是负数。你的意思是-12-5i或者12-5i这种形式的不好处理是么?
2 年多之前 回复
qq_33691951
qq_33691951 如果实部和虚部都是复数分割实部和虚部时就两个负号了不好弄吖,所以我就用for循环来将第一个字符是负号的情况单独拿出来了
2 年多之前 回复
qq_33691951
qq_33691951 谢谢
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.04.07 01:00

假设基于
http://ask.csdn.net/questions/247718
这里我的代码

string s = "1+2i";
int x = int.Parse(s.Split('+')[0].Trim());
int y = int.Parse(s.Split('+')[1].Replace("i", "").Trim());
Complex c = new Complex(x, y);

如果问题解决(包括上个问题),请帮我采纳下,方法是点我回答右边的采纳按钮。谢谢

caozhy
caozhy 回复qq_33691951: 没关系,你试试我地代码就知道了
2 年多之前 回复
qq_33691951
qq_33691951 就是如果不知道a代表的是呐几尾数呢?就是输入的复数形式的字符串是随便输入的要求转换成复数,比如可能是-45678998+854649646i 也可能是2+3i呢?我的代码好像进入死循环了,for循环一直出不来
2 年多之前 回复
herozhangbz
herozhangbz   2016.04.07 10:30

忘了说了你要引用using System.Numerics;找一下这个.net组件他的复数形式就是(123,5)形式,应该可以进行复数间的运算操作,我没试过

herozhangbz
herozhangbz   2016.04.07 21:28

我再帮你考虑下实部虚部有负数的情况

            string s = "-123-5i";
            double real, image;
            if (s.Contains('+'))
            {
                real = double.Parse(s.Split('+')[0]);
                image = double.Parse(s.Split('+')[1].Split('i')[0]);
            }
            else
            {
                real = double.Parse(s.Substring(0, s.LastIndexOf('-')));
                image = double.Parse(s.Substring(s.LastIndexOf('-'), s.Length - 1 - s.LastIndexOf('-')));
            }
            Complex cop = new Complex(real, image);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
1051 复数乘法 (15)(15 分)
1051 复数乘法 (15)(15 分) 复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i^2^ = -1;也可以写成极坐标下的指数形式(R*e^(Pi)^),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式 R(cos(P) + isin(P))。 现给定两个复数的R和P,要求输出两数乘积的常规形式。 输入格式: 输入在一行中依次给出两个复数的...
1051. 复数乘法
复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式(R(cos(P) + isin(P))。 现给定两个复数的R和P,要求输出两数乘积的常规形式。 输入格式: 输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间
PAT乙级练习题B1051. 复数乘法
题目描述复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式(R(cos(P) + isin(P))。现给定两个复数的R和P,要求输出两数乘积的常规形式。输入格式:输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。输出格式:
ADV-94-算法提高-复数归一化
算法提高 复数归一化 编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b) 。 使用结构体指针类型作为函数参数可能是必要的。其中实部和虚部由键盘输入,输出为归一化结果, 如果归一化结果的实部或虚部为小数的要求保留一位小数。 样例输入:(格式说明:3 4 分别为以空格隔开的实数的实部和虚部) 
设计复数类Complex,计算两个复数之和、差,同时以 a+bi 的字符串形式显示
 软件技术1班 作者:A27陈城安 完成时间:2014年12月13日 问题描述:设计复数类Complex,计算两个复数之和、差,同时以 a+bi 的字符串形式显示 输出描述:使用复数类Complex验证两个复数1+2i和3+4i相加产生一个新的复数4+6i,相减产生一个新的复数-2-2i using System; using System.Collections.Generic;
leetcode练习题537. 复数乘法
给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。示例 1:输入: "1+1i", "1+1i" 输出: "0+2i" 解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。 示例 2:输入: "1+-1i", "1+-1i" 输出: "0+-2i" 解释: (1 - i) * (1
Python 对英语单词单数变复数
def plural(word): if word.endswith('y'): return word[:-1] + 'ies' elif word[-1] in 'sx' or word[-2:] in ['sh', 'ch']: return word + 'es' elif word.endswith('an'): r
使用模板类实现复数的四则运算
复数:是指能写成如下形式的数a+bi,这里a和b是实数,i是虚数单位, i*i = -1 在复数 a+bi 中 a为复式的实部 , b为复数的虚部 复数的四则运算: (a+bi)+ (c+di)= (a+c)+ (b+d)i;  (a+bi)- (c+di) = (a-c) + (b-d)i; (a+bi)* (c+di) = (ac-bd)+ (ad+bc)i; (a+b
Python名词单数变换为复数函数
def plural(word): if word.endswith('y'): return word[:-1]+'ies' elif word[-1] in 'sx' or word[-2:] in ['sh','ch']: return word+'es' elif word.endwith('an'): return
C++之操作符重载和友元学习笔记
用户定义的多个名称相同但特征标(参数列表)不同的函数,这被称为函数重载或函数多态。目的是让您能够用相同的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。     要重载操作符,需要使用被称为操作符函数的特殊函数形式,操作符函数的格式如下: operator op (argument list)         操作符重载的限制: 1、重载后的操作符必须至少有一个操作数是用户定义