如果首先输入值的数量,则求和

问题描述

我如何编写一个Little Man程序,该程序将一系列输入数字相加并输出和。第一个输入值将包含跟随输入的值的数量,这些值将被加在一起。

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

在这里,我的问题是计算步数。用户可能没有提供任何可用于计数的特定数字,即可能没有任何输入0或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>

,

的确,我不明白您的问题,但是也许这个简单的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);
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...