【问题标题】:Summing up values if number of values is given as first input如果将值的数量作为第一个输入给出,则对值求和
【发布时间】:2020-08-19 01:44:05
【问题描述】:

如何编写一个小人程序,将一系列输入数字相加并输出总和。第一个输入值将包含作为输入的值的数量,这些值将被加在一起。

我知道这可以通过使用 for 循环或 while 循环来完成。

这里我的问题是计算步数。用户可能不会给出任何我们可以用来计数的特定数字,即可能没有任何输入 0 或 1 开始计数。

【问题讨论】:

    标签: algorithm logic little-man-computer


    【解决方案1】:

    当您声明它是给定的时,不清楚您遇到了什么问题:

    第一个输入值将包含值的数量

    这个号码将成为您的计数器。

    你写:

    可能没有任何输入0或1开始计数

    您不需要将其作为输入。您的程序可以有DAT 条目,您确实可以在其中存储这样的计数器,甚至在程序运行之前将其初始化为 0 或 1。但在这种特殊情况下,使用第一个输入作为计数器的初始值,倒计时(而不是向上)可能更容易。

    所以,程序的第一个任务是读取那个数字。然后它可以将其存储为计数器(并释放累加器),然后开始读取剩余的值。在读取每个下一个输入之前,程序将减少计数器并验证它是否仍然不为零。

    LMC 代码如下所示:

    #input: 5 10 20 30 40 50
    START     INP          // Number of values
         LOOP BRZ FINISH   // No more values? Finish
              SUB ONE      // Decrement counter
              STA COUNT
              INP          // Read next number from input
              ADD SUM      // and add it to the 
              STA SUM      // sum.
              LDA COUNT    // Get counter
              BRA LOOP
       FINISH LDA SUM      // Output the sum
              OUT
              HLT
          ONE DAT 1
        COUNT DAT
          SUM DAT 0
    
    <script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.7/lmc.js"></script>

    【讨论】:

      【解决方案2】:

      确实我不明白你的问题,但也许这个简单的 C# 控制台应用程序可以提供帮助:

      static void Main(string[] args)
      {
          string input;
          List<int> data = new List<int>();
      
          Console.WriteLine("Data Input");
      
          do
          {
              Console.Write("Input [q to quit]: ");
      
              if ((input = Console.ReadLine()).ToLower() == "q")
                  break;
      
              try
              {
                  data.Add(int.Parse(input));
              }
              catch (Exception)
              {
                  Console.WriteLine("Input Error!");
              }
          } while (true);
      
          int sum = 0;
      
          foreach (int number in data)
          {
              sum += number;
          }
      
          Console.WriteLine(sum);
      }
      

      【讨论】:

        猜你喜欢
        • 2019-11-23
        • 1970-01-01
        • 2021-01-01
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多