Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我希望通过将输入数组的所有项相乘来计算,但不包括例如第I项_C#_Arrays_.net_Algorithm - Fatal编程技术网

C# 我希望通过将输入数组的所有项相乘来计算,但不包括例如第I项

C# 我希望通过将输入数组的所有项相乘来计算,但不包括例如第I项,c#,arrays,.net,algorithm,C#,Arrays,.net,Algorithm,例如 给定以下数组,输入数组:[2,3,6,8] 结果数组将是:resultArray:[144,96,48,36] resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3] resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3] resultArray[n] = inputArray[0] *...* inputArray[n-1] * inputArray

例如

给定以下数组,
输入数组:[2,3,6,8]

结果数组将是:
resultArray:[144,96,48,36]

resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3]
resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3]
resultArray[n] = inputArray[0] *...* inputArray[n-1] * inputArray[n+1] *...* inputArray[last]
我已经编写了如下代码,但如何使用for或其他循环进行此计算

static void multiply()
    {
        int[] inputArray = { 2, 3, 6, 8 };
        int[] resultArray = { 1, 1, 1, 1 };
        for (int i = 0; i < inputArray.Length; i++)
        {
            Console.Write(inputArray[i] + " ");
        }
        Console.WriteLine();
        //for (int i = 0; i < inputArray.Length; i++)
        //{
        //    resultArray[i] = inputArray[0] * inputArray[i - 1] * inputArray[i + 1];
        //}
        resultArray[0] = inputArray[1] * inputArray[2] * inputArray[3];
        resultArray[1] = inputArray[0] * inputArray[2] * inputArray[3];
        resultArray[2] = inputArray[0] * inputArray[1] * inputArray[3];
        resultArray[3] = inputArray[0] * inputArray[1] * inputArray[2];

        for (int i = 0; i < resultArray.Length; i++)
        {
            Console.Write(resultArray[i] + " ");
        }
    }
static void multiply()
{
int[]inputArray={2,3,6,8};
int[]resultArray={1,1,1,1};
for(int i=0;i
基本上,您只需在结果数组中留下所需索引的数字,因此可以除以该数字。下面是可以帮助您的代码

            int result = 1;
                    for (int j = 0; j < inputArray.Length; j++)
                    {
                        result = result * inputArray[j];
                    }

                for (int i = 0; i < resultArray.Length; i++)
                {

                    resultArray[i] = result / inputArray[i];
                }
int结果=1;
for(int j=0;j

如果答案有帮助,请接受。

基本上,您只需在结果数组中留下所需索引的数字,因此您可以除以该数字。下面是可以帮助您的代码

            int result = 1;
                    for (int j = 0; j < inputArray.Length; j++)
                    {
                        result = result * inputArray[j];
                    }

                for (int i = 0; i < resultArray.Length; i++)
                {

                    resultArray[i] = result / inputArray[i];
                }
int结果=1;
for(int j=0;j

如果答案有帮助,请接受。

如果索引相同,则不能将值相乘:

private static void multiply()
{
    int[] inputArray = { 2, 3, 6, 8 };
    int[] resultArray = new int[inputArray.Length];

    for ( int i = 0; i < inputArray.Length; i++ )
        Console.Write(inputArray[i] + " ");

    Console.WriteLine();

    for ( int indexInOutput = 0; indexInOutput < resultArray.Length; indexInOutput++ )
    {
        int result = 1;
        for ( int indexInInput = 0; indexInInput < inputArray.Length; indexInInput++ )
        {
            if ( indexInInput != indexInOutput )
                result *= inputArray[indexInInput];
        }

        resultArray[indexInOutput] = result;
    }

    for ( int i = 0; i < resultArray.Length; i++ )
        Console.Write(resultArray[i] + " ");
}
如你所料

这种方法避免了如果输入数组中有大的数字,并且尝试将所有数字相乘,然后除以未使用的数字(例如,如果
inputArray

{ 1001, 1002, 1003, 1004 }

如果索引相同,则不能将该值相乘:

private static void multiply()
{
    int[] inputArray = { 2, 3, 6, 8 };
    int[] resultArray = new int[inputArray.Length];

    for ( int i = 0; i < inputArray.Length; i++ )
        Console.Write(inputArray[i] + " ");

    Console.WriteLine();

    for ( int indexInOutput = 0; indexInOutput < resultArray.Length; indexInOutput++ )
    {
        int result = 1;
        for ( int indexInInput = 0; indexInInput < inputArray.Length; indexInInput++ )
        {
            if ( indexInInput != indexInOutput )
                result *= inputArray[indexInInput];
        }

        resultArray[indexInOutput] = result;
    }

    for ( int i = 0; i < resultArray.Length; i++ )
        Console.Write(resultArray[i] + " ");
}
如你所料

这种方法避免了如果输入数组中有大的数字,并且尝试将所有数字相乘,然后除以未使用的数字(例如,如果
inputArray

{ 1001, 1002, 1003, 1004 }
类程序
{
静态int GetMulResult(int[]输入,int ommitingIndex)
{
int结果=1;
for(int i=0;i
另外,我担心如果你不能创建这样一个简单的算法,你将无法创建更多可用的算法。你应该在这方面下功夫。

课程计划
{
静态int GetMulResult(int[]输入,int ommitingIndex)
{
int结果=1;
for(int i=0;i

另外,我担心如果你不能创建这样一个简单的算法,你将无法创建更多可用的算法。您应该对此进行操作。

使用Linq的一种方法是使用
聚合
获得值的总乘积,然后将结果值指定为当前循环索引处输入项除以的乘积:

static void Multiply()
{
    int[] input = { 2, 3, 6, 8 };
    int[] result = new int[input.Length];

    var product = input.Aggregate((i, j) => i * j);

    for (int i = 0; i < input.Length; i++)
    {
        result[i] = product / input[i];
    }

    Console.WriteLine(string.Join(" ", input));
    Console.WriteLine(string.Join(" ", result));
    Console.ReadKey();
}
static void Multiply()
{
int[]输入={2,3,6,8};
int[]结果=新的int[input.Length];
var乘积=输入。聚合((i,j)=>i*j);
for(int i=0;i
输出


使用Linq的一种方法是使用
聚合
获得值的总乘积,然后将结果值指定为当前循环索引处输入项除以的乘积:

static void Multiply()
{
    int[] input = { 2, 3, 6, 8 };
    int[] result = new int[input.Length];

    var product = input.Aggregate((i, j) => i * j);

    for (int i = 0; i < input.Length; i++)
    {
        result[i] = product / input[i];
    }

    Console.WriteLine(string.Join(" ", input));
    Console.WriteLine(string.Join(" ", result));
    Console.ReadKey();
}
static void Multiply()
{
int[]输入={2,3,6,8};
int[]结果=新的int[input.Length];
var乘积=输入。聚合((i,j)=>i*j);
for(int i=0;i
输出


我的方法遵循了许多人的思想路线。为了简单起见,我使用了LINQ

        int fullProduct = 1;
        List<int> input = new List<int> { 2, 3, 6, 8 };
        List<int> result = new List<int>();

        input.ForEach(v => { fullProduct *= v; });
        input.ForEach(c=>
        {
           result.Add(fullProduct / c);
        });
int-fullProduct=1;
列表输入=新列表{2,3,6,8};
列表结果=新列表();
input.ForEach(v=>{fullProduct*=v;});
input.ForEach(c=>
{
结果。添加(完整产品/c);
});
我的a