一道C++编程题目,思路是什么

问题描述:

一道C++编程题目,思路是什么
2.方程式
给出一个字符串,表达一个方程.
保证里面系数不会超过 1000000000.
保证方程有且只有一个解,而且方程只会有一个未知数 X,且X 的最高指数也只会有 1.
方程中所有的系数都是整数,且系数是1 就会被省略.
只会出现+、-符号,不会出现乘、除.
【输入】
输入一个字符串.表示方程.
【输出】
输出 X 的解.保留三位小数.
【样例】
equationagain.in
6x+7x+8x+1=6x+7x+9x
equationagain.out
1.000
【数据规模】
100%方程长度不会超过 255.
1个回答 分类:综合 2014-11-10

问题解答:

我来补答
首先是方程式怎样表示的问题,在“数据规模”中提到方程长度不会超过255,即方程可用大小为256的字符数组来保存,既然是C++,当然也能用string来保存.为体现C++的优越,就用string吧.
主要思路就是跟据这个字符串,读出每个X的系数以及常数项;对于一元一次方程,常数项除以系数就是未知数的根了,最主要的就是设计算法读出每个项及其符号了.
我的具体思路就是读取每个字符,如果读到数字,就将其放入一个字符串n中,一旦读出的字符不是数字,转换n为整数,并结合符号位得出正负;如果读出符号,保存给符号位;如果数字之后读出X,就认为刚才读到的数字是X的系数,而应该加到系数中,如果是+-号就是常数项,加到常数中;如果+-号之后就是X,那么系数就为1.一旦碰到=号,就说明正负的计算应颠倒了……
总而言之就是解方程中的移项合并同类项,要是看不懂,我明天就追加一段代码来具体说明.
 
 
展开全文阅读
剩余:2000