如何用sed/awk编写脚本为非零系数添加对应x^幂次
用awk实现多项式格式化输出方案
刚好最近处理过类似的多项式格式化需求,用awk就能完美解决这个问题,给你看看具体实现:
实现脚本
{ n = NF - 1 # 计算当前行的最高幂次 expr = "" for (i=1; i<=NF; i++) { coeff = $i k = n - (i - 1) # 当前项的幂次,从最高幂次递减 if (coeff == 0) continue # 跳过系数为0的项 # 生成当前项的字符串 term = coeff if (k > 0) { term = term "x" if (k > 1) term = term "^" k } # 拼接所有有效项,用+连接 if (expr == "") { expr = term } else { expr = expr "+" term } } print expr # 输出格式化后的多项式 }
使用方法
假设你的输入文件名为poly_input.txt,直接运行以下命令即可得到结果:
awk -f poly_format.awk poly_input.txt
比如输入:
23 12 0 33 3 4 19
输出就是:
23x^3+12x^2+33 3x^2+4x+19
脚本逻辑说明
- 利用
NF(当前行的字段数量)计算最高幂次:n = NF - 1,因为字段数比最高幂次多1(比如4个字段对应幂次3) - 循环遍历每个系数,计算对应项的幂次
k,从最高幂次依次递减 - 跳过系数为0的项,避免生成多余的无效项
- 根据幂次动态生成项的格式:幂次>1时带
^k,幂次=1时只带x,幂次=0时直接保留系数 - 最后把所有有效项用
+连接起来,输出最终的多项式字符串
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

