一道C++编程题目,思路是什么
2.方程式【问题】给出一个字符串,表达一个方程。保证里面系数不会超过1000000000。保证方程有且只有一个解,而且方程只会有一个未知数X,且X的最高指数也只会有1.方...
2. 方程式
【问题】
给出一个字符串,表达一个方程。
保证里面系数不会超过 1000000000。
保证方程有且只有一个解,而且方程只会有一个未知数 X,且X 的最高指数也只会有 1.
方程中所有的系数都是整数,且系数是1 就会被省略。
只会出现+、-符号,不会出现乘、除。
【输入】
输入一个字符串。表示方程。
【输出】
输出 X 的解。保留三位小数。
【样例】
equationagain.in
6x+7x+8x+1=6x+7x+9x
equationagain.out
1.000
【数据规模】
100%方程长度不会超过 255。 展开
【问题】
给出一个字符串,表达一个方程。
保证里面系数不会超过 1000000000。
保证方程有且只有一个解,而且方程只会有一个未知数 X,且X 的最高指数也只会有 1.
方程中所有的系数都是整数,且系数是1 就会被省略。
只会出现+、-符号,不会出现乘、除。
【输入】
输入一个字符串。表示方程。
【输出】
输出 X 的解。保留三位小数。
【样例】
equationagain.in
6x+7x+8x+1=6x+7x+9x
equationagain.out
1.000
【数据规模】
100%方程长度不会超过 255。 展开
1个回答
展开全部
首先是方程式怎样表示的问题,在“数据规模”中提到方程长度不会超过255,即方程可用大小为256的字符数组来保存,既然是C++,当然也能用string来保存。为体现C++的优越,就用string吧。
主要思路就是跟据这个字符串,读出每个X的系数以及常数指键项;对棚正于一元一次方程,常数项除以系数就是未知数的根了,最主要的就是设计算法读出每个项及其符号了。
我的具体思路就是读取每个字符,如果读到数字,就将其放入一个字符串n中,一旦读出的字唯和巧符不是数字,转换n为整数,并结合符号位得出正负;如果读出符号,保存给符号位;如果数字之后读出X,就认为刚才读到的数字是X的系数,而应该加到系数中,如果是+-号就是常数项,加到常数中;如果+-号之后就是X,那么系数就为1。一旦碰到=号,就说明正负的计算应颠倒了……
总而言之就是解方程中的移项合并同类项,要是看不懂,我明天就追加一段代码来具体说明。
主要思路就是跟据这个字符串,读出每个X的系数以及常数指键项;对棚正于一元一次方程,常数项除以系数就是未知数的根了,最主要的就是设计算法读出每个项及其符号了。
我的具体思路就是读取每个字符,如果读到数字,就将其放入一个字符串n中,一旦读出的字唯和巧符不是数字,转换n为整数,并结合符号位得出正负;如果读出符号,保存给符号位;如果数字之后读出X,就认为刚才读到的数字是X的系数,而应该加到系数中,如果是+-号就是常数项,加到常数中;如果+-号之后就是X,那么系数就为1。一旦碰到=号,就说明正负的计算应颠倒了……
总而言之就是解方程中的移项合并同类项,要是看不懂,我明天就追加一段代码来具体说明。
参考资料: 如果您的回答是从其他地方引用,请表明出处
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询