[问题] C++读档的小问题

楼主: amy99778 (かおる)   2014-10-15 03:45:17
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)

问题(Question):
本身对于读input的处理不太擅长...
请问 若输入的值
每行可能是 3x^2 + x + -3
类似的多项式
或是单一个*或+代表算子
可能系数是1所以只有显示x
也可能X的次方是0次 所以只有显示系数
也可能两者都有
需要一次读一整行
本来想说用getline存在char阵列中
但这样数字都变成字符散开QQ
试了满多种方法就是找不出的方法可以把所有可能性写进去
不知道是不是有什么概念或是方法可以处理类似这样的输入值呢?
应该不会只能暴力解吧QQ
作者: johnpage (johnpage)   2014-10-15 06:28:00
资料结构
楼主: amy99778 (かおる)   2014-10-15 10:38:00
请问是要用哪一种呢?><还没有学过资料结构
作者: dirkc (3781615)   2014-10-15 13:05:00
通常会用树;但你的目的是什么?不用计算的话全部char亦无妨
作者: BlazarArc (Midnight Sun)   2014-10-15 16:33:00
可以贴code上来看看
作者: remizu (remizu)   2014-10-15 21:12:00
如果保证输入一定是有效的的话会比较简单先扫过整行找出最大的degree后开阵列 之后在一项一项存剩下的就一个一个字符处理判断数字字符可以用ctype 字串转数值可用atoi或自己写可以放个状态变量来记录目前读到什么及预期读到什么P.S 以这个程式来说 我觉得用链结串行会比阵列好可能是cin读取+或*后 换行字符还在 所以p2.Set()吃到没被消化掉的换行了
作者: BlazarArc (Midnight Sun)   2014-10-16 10:38:00
你的问题出在 input 没有自己定义清楚抽象的格式把 Polynomial 的字串 拆开 你需要用什么当 delimiter?以你的例子来说 polynomial = 以+号分隔的 term然后再定义什么是一个term? 以x分隔的coeff与power可以参考 ebnf 或者 regular expression

Links booklink

Contact Us: admin [ a t ] ucptt.com