如果值的数量作为第一个输入给出,则对值求和
Summing up values if number of values is given as first input
如何编写一个 Little Man 程序,将一系列输入数字相加并输出总和。第一个输入值将包含后面作为输入的值的数量,这些值将被加在一起。
我知道这可以通过使用 for 循环或 while 循环来完成。
这里我的问题是计算步数。用户可能没有给出任何我们可以用来计数的具体数字,即可能没有任何输入 0 或 1 开始计数。
确实我不明白你的问题,但也许这个简单的 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);
}
不清楚您遇到的问题是什么,因为您说这是给定的:
The first input value will contain the number of values
这个号码将成为您的计数器。
你写:
There may not be any input 0 or 1 to start counting
您不需要它作为 输入。你的程序可以有 DAT
个条目,你 do 有可能存储这样的计数器,甚至在程序运行之前将其初始化为 0 或 1。但在这种特殊情况下,使用第一个输入作为计数器的初始值,count-down(不向上)可能更容易。
所以,程序的第一个任务就是读取那个数字。然后它可以将其存储为计数器(并释放累加器),然后开始读取剩余的值。在读取每个下一个输入之前,程序将减少计数器并验证它是否仍然不为零。
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>
如何编写一个 Little Man 程序,将一系列输入数字相加并输出总和。第一个输入值将包含后面作为输入的值的数量,这些值将被加在一起。
我知道这可以通过使用 for 循环或 while 循环来完成。
这里我的问题是计算步数。用户可能没有给出任何我们可以用来计数的具体数字,即可能没有任何输入 0 或 1 开始计数。
确实我不明白你的问题,但也许这个简单的 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);
}
不清楚您遇到的问题是什么,因为您说这是给定的:
The first input value will contain the number of values
这个号码将成为您的计数器。
你写:
There may not be any input 0 or 1 to start counting
您不需要它作为 输入。你的程序可以有 DAT
个条目,你 do 有可能存储这样的计数器,甚至在程序运行之前将其初始化为 0 或 1。但在这种特殊情况下,使用第一个输入作为计数器的初始值,count-down(不向上)可能更容易。
所以,程序的第一个任务就是读取那个数字。然后它可以将其存储为计数器(并释放累加器),然后开始读取剩余的值。在读取每个下一个输入之前,程序将减少计数器并验证它是否仍然不为零。
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>