【问题标题】:I need help creating/improving my for-loop我需要帮助创建/改进我的 for 循环
【发布时间】:2015-11-29 11:23:14
【问题描述】:

我创建了一个程序来创建多项式。但是,我无法以正确的方式显示指数。

例如,如果我在数组中输入 [1,2,3] 来创建多项式,我会返回多项式:1 + 2x + 3x^(2)。我想要返回的是:1x^(2) + 2x + 3。请注意,我的数组中的数字仍然是相同的顺序。唯一改变的是指数和幂从左侧开始(最高度数从左侧开始)。我需要帮助来完成这部分。

这是我对它进行排序的循环代码:

\

提前致谢!

【问题讨论】:

  • 你为什么不尝试添加第二个变量,例如power,从n 开始计数向下,代表x 的力量?这是微不足道的。
  • 但是 x 会从左侧开始吗?
  • 你是从左到右构造多项式吗?是的。那就去试试吧。
  • 你在这里得到现成的答案是在伤害自己。相反,尝试使用调试器查看程序在运行时出错的地方。

标签: c# arrays sorting for-loop


【解决方案1】:

只需将 i 初始化为 n-1 并在每次迭代中减去

public void printPoly1(int[] poly, int n)
{
    for (int i = n-1; i  >= 0; i--)
    {
        Console.Write(poly[i]);
        if (i != 0)
        {
            Console.Write("x^" + i + " + ");
        }
    }
    Console.WriteLine("\n");
}

【讨论】:

  • 我运行了这个,它说索引超出了边界。
【解决方案2】:

如果是部分则更改此内容

if (i != 0)
{
    Console.Write("x^" + i);
}

到这里

if ((n - 1 - i) != 0)
{
    Console.Write("x^" + (n - 1 - i));
}

因为电源应该从循环结束开始(如反向循环)。但是您正在从头到尾迭代(正常循环)。所以从n - 1 中减去计数器(i)。

如果你还是不明白,请看这里。第一行是循环中的计数器,应该从 0 到 6 开始。

0    1    2    3    4    5    6    // normal

6-0  6-1  6-2  6-3  6-4  6-5  6-6  // do subtract

6    5    4     3    2    1    0   // inverse

【讨论】:

  • 你的补充材料对我有帮助。
猜你喜欢
  • 2014-09-30
  • 2019-06-07
  • 1970-01-01
  • 2021-08-25
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多