C# C程序,返回不工作的数字的摩尔斯电码
我试着做一个程序,当给定一个4位数的数字时,比如1001,它对该数字的位数求和,对于1001,这是1+0+0+1=2,然后它找到从1到6的6个数字的所有序列,包括排列,即1*1*1*1*1*2不同于2*1*1*1*1*1,其乘积就是那个数字 结果应以以下格式打印在控制台上:每6个数字的序列及其莫尔斯表示,用一根管道隔开:1是。--,2是…:--------------------------------------------,在新行上的下一个排列:。----------------------------------------------------------------,依此类推 问题是,我的解决方案没有显示正确的答案,甚至没有显示正确的答案数量 这是我的代码,如果可能的话,请告诉我我的错误在哪里,而不是LINQ和regex问题的一些单行黑客解决方案,天知道是什么:C# C程序,返回不工作的数字的摩尔斯电码,c#,C#,我试着做一个程序,当给定一个4位数的数字时,比如1001,它对该数字的位数求和,对于1001,这是1+0+0+1=2,然后它找到从1到6的6个数字的所有序列,包括排列,即1*1*1*1*1*2不同于2*1*1*1*1*1,其乘积就是那个数字 结果应以以下格式打印在控制台上:每6个数字的序列及其莫尔斯表示,用一根管道隔开:1是。--,2是…:--------------------------------------------,在新行上的下一个排列:。----------------------
string n = Console.ReadLine();
string[] digitsChar = new string[n.Length];
for (int i = 0; i < 4; i++)
{
digitsChar[i] = n[i].ToString();
}
int[] digits = new int[digitsChar.Length];
for (int i = 0; i < 4; i++)
{
digits[i] = Convert.ToInt32(digitsChar[i]);
}
int morseProduct = digits.Sum();
Console.WriteLine(morseProduct);
List<int> morseCodeNumbers = new List<int>();
for (int i = 1; i < 6; i++)
{
for (int j = 1; i < 6; i++)
{
for (int k = 1; i < 6; i++)
{
for (int l = 1; i < 6; i++)
{
for (int m = 1; i < 6; i++)
{
for (int o = 1; o < 6; o++)
{
int product = i * j * k * l * m * o;
if (product == morseProduct)
{
morseCodeNumbers.Add(i);
morseCodeNumbers.Add(j);
morseCodeNumbers.Add(k);
morseCodeNumbers.Add(l);
morseCodeNumbers.Add(m);
morseCodeNumbers.Add(o);
}
}
}
}
}
}
}
int numberOfNumbers = morseCodeNumbers.Count;
string[] morseCodes = new string[] { "-----", ".----", "..---", "...--", "....-", "....." };
for (int i = 0; i < numberOfNumbers; i++)
{
int counter = 0;
if (i % 5 == 0)
{
Console.WriteLine();
counter = 0;
}
if (counter < 5)
{
int index = morseCodeNumbers[i];
Console.Write(morseCodes[index] + "|");
counter++;
}
很多for循环条件指的是i,而不是j、k、l和m。增量部分也是如此。例如:
for (int j = 1; i < 6; i++)
你的样品似乎有问题。它们只包含5个数字。对吗?谢谢!复制粘贴循环条件的危险:D
for (int j = 1; j < 6; j++)
for (int i = 1; i <= 6; i++)
for (int i = 0; i < 4; i++)
{
digitsChar[i] = n[i].ToString();
}
int[] digits = new int[digitsChar.Length];
for (int i = 0; i < 4; i++)
{
digits[i] = Convert.ToInt32(digitsChar[i]);
}
var digits = n.Select(c=>(int)char.GetNumericValue(c) ).ToArray();