Member 11031424 Ответов: 1

Пожалуйста, помогите мне сделать эту сумму и разбить массив вот так.


arr[]={1,3,2,4,6,7,8,9,10, 11,12,16,5,8,7,8,4,6};
split=2; // the arr[] will be divide in 2(no of splits) parts each with equal elements split=1,2,3...n
skip=2; // skip is no of element to be skipped. skip=1,2,3...n
size of res[] should be accordingly.
then
res[0]=15 //1+4+8
res[1]=18//3+6+9
res[2]=19 //2+7+10
res[3]=24 //11+5+8
res[4]= 24 //12+8+4
res[5]= 29//16+7+6

и как мудрое разделение может быть от 1 до n.
arr[]={1,2,3...n} элементов
Это должно быть динамично.
Пожалуйста, помогите мне сделать это.
Спасибо

Что я уже пробовал:

int[] arr = { 1, 3, 2, 4, 6, 7, 8, 8 };  
int split = 2;  
int counter1 = 0;  
int counter = arr.Length / (split);  
int[] tempArr = new int[counter];  
  
for (int idx = 0; idx < counter; idx++)  
{  
    if (idx % split == 0)  
    {  
        counter1 = idx * split;  
    }  
    else  
    {  
        counter1 = idx * split - 1;  
    }  
  
    tempArr[idx] = arr[counter1] + arr[counter1 + split];  
}

Я пробовал это сделать но он пропускает только 1 элемент также расщепляется не работает верно

Member 11031424

Извините, но код работает не так, как указано.
размер результирующего массива должен быть 6, как показано в вопросе, а также результирующий массив-нет.
Пожалуйста, ответьте и помогите

1 Ответов

Рейтинг:
1

Peter Leow

Вы спрашиваете, и ваш пример не вяжется. Во всяком случае, если я вас правильно понял, вы хотели создать новый массив int, элементы которого являются суммой элементов int на определенном интервале (пропуске) существующего массива. По-видимому, вам нужен внутренний цикл for, начальный индекс которого будет следующим элементом в существующем массиве, а инкрементное значение-skip+1, чтобы собрать и суммировать элементы в существующем массиве . Ознакомьтесь с этим примером и адаптируйте его к вашим потребностям:

using System;

public class Program
{
	public static void Main()
	{
		int[] arr =
		{
			1,3,2,4,6,7,8,9,10, 11,12,16,5,8,7,8,4,6,7
		}
		;
		int split = 2;
		int counter = arr.Length / (split);
		int skip = 2;
		int[] tempArr = new int[counter];
		for (int idx = 0; idx < counter; idx++)
		{
			int sum = 0;
			for (int i = idx; i < arr.Length; i = i + skip + 1)
			{
				sum += arr[i];
			}

			tempArr[idx] = sum;
		}

		for (int j = 0; j < tempArr.Length; j++)
		{
			Console.WriteLine(tempArr[j]);
		}
	}
}