如何解决如果首先输入值的数量,则求和
我如何编写一个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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。