编写一个伪代码算法,输入一系列人物 年龄(以1到120之间的整数表示)并计算最大值和平均值 年龄。平均年龄应计算为实数。你的算法应该 继续输入年龄值,直到用户输入零值。这是一个信号 算法停止输入年龄,然后输出平均和最大年龄。如果 用户输入无效的年龄,那么您的算法应该继续重新提示 用户,直到他们进入有效年龄。您的算法应该充分利用子模块。 在确定平均或最大年龄时,不应包括零。
这是我的练习题
我想出了
public ueSecurityToken GenerateToken(string key, string pin)
{
var token = new ueSecurityToken
{
SourceKey = key,
ClientIP = new WebClient().DownloadString("http://bot.whatismyipaddress.com/")
};
var hash = new ueHash
{
Type = "md5",
Seed = Guid.NewGuid().ToString()
};
var input = string.Concat(token.SourceKey, hash.Seed, pin); // combine data into single string
// Create a new instance of the MD5CryptoServiceProvider object.
var md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
var data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
var sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
foreach (var t in data)
{
sBuilder.Append(t.ToString("x2"));
}
hash.HashValue = sBuilder.ToString();
token.PinHash = hash;
return token;
}
public interface IGenerateToken
{
ueSecurityToken GenerateToken(string key, string pin);
}
我的问题是我不太确定如何输入1到120并在输入0时停止循环并获得输入的次数,这样我就可以计算出平均值。主要的for循环也是一个问题。我得到的问题是什么,但它只是没有在我的脑海里聚在一起。我可以帮助解决这个问题吗?
答案 0 :(得分:0)
嗯,对于初学者来说,在收集所有输入并将最大值保存到最大值之后计算平均值会简单得多。因此,将sum和max设置为0并创建一个变量来计算输入数量将是一个不错的开始。我会做这样的事情:
main
max = 0
sum = 0
count = 0
WHILE true
age = inputAge <-prompt "enter age"
IF age == 0 THEN
BREAK
END IF
IF age > max THEN
max = age
END IF
sum = sum + age
count = count + 1
END WHILE
average = getAverage <- sum, count
IF count == 0 THEN
OUTPUT "There was no input"
ELSE
OUTPUT max, average
END IF
END MAIN
METHOD inputAge
IMPORT prompt
EXPORT age
INPUT age
WHILE age >= 120 AND age <= 0 DO
OUTPUT "enter valid age"
INPUT age
END WHILE
END
METHOD getAverage
IMPORT sum, number of times input
EXPORT average
average = sum / number of times input
END