none
Вопрос по циклу For ещё один RRS feed

  • Вопрос

  • Не знаю как решить один вопросик?

    Сначала суть:

    есть коллекция чисел Observarcollection - называется Obpany например:

    5, 6, 2

    и 8, 9, 6

    Эту коллекцию я отправляю в класс и возвращаю массив из уже допустим 100 чисел. (расчёт в данном случае работает правильно его не привожу)

    и нужно сложить все пришедшие массивы в один. В данном случае их два по 100 чисел.

    Например отправляю 5,6,2 приходит 1,456,12,458,45,687,46,54,68564,51,31,5,1,1....... и т.д. например int[100]

    далее отправляю 8,9,6 приходит 45,5,546,8,351,5,48,345,489,435,8,3,3,8541,3....

    Должно получится int[100] = 46,461,558,466 и т.д.

    делаю так:

    private int[] arrKolSumma = new int[9];
    
    My metod
    {
    Array.Clear(arrKolSumma, 0, arrKolSumma.Count());
                for (int i = 0; i < Obpany.Count(); i++)
                {
                    pfgss.loaddata(Convert.ToInt32(Obpany[i].Item5), Convert.ToInt32(Obpany[i].Item6), Convert.ToInt32(Obpany[i].Item7));
    
                    kolArr = pfgss.arrKol;
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
                    for (int y = 0; y < kolArr.Length; y++)
                    {
                        kolArr[y] += kolArr[y];
                    }
                }
    }

    до восклицательных знаков всё работает как надо. А после само сложение почему то выдаёт результаты, которые просчитать никак не могу. Например при тестировании если отправлять из коллекции одни и те же цифры, то отправив 0 я могу при сложении двух нулей получить вдруг 4. При других последовательностях другие варианты но никак не поддающиеся (известным мне) математическим функциям. :)

    arrKolSumma это был ещё один массив, который был результатом сложения, но подставив его в выражение kolArr[y] += kolArr[y]; ничего не меняется. Результаты также не те.


    Спасибо



    27 марта 2013 г. 4:02

Ответы

  • Не очень понял в чем проблема, но вот эта строка меня настораживает:

    kolArr[y] += kolArr[y];

    Вы понимаете, что вы не складываете поэлементно два массива и результат записываете в тертий массив, а просто в массиве kolArr каждый элемент умножаете на 2? Т.е. у вас там сейчас записано:

    a = a + a;

    • Помечено в качестве ответа developers_s 27 марта 2013 г. 16:32
    27 марта 2013 г. 9:02
    Отвечающий

Все ответы

  • Не очень понял в чем проблема, но вот эта строка меня настораживает:

    kolArr[y] += kolArr[y];

    Вы понимаете, что вы не складываете поэлементно два массива и результат записываете в тертий массив, а просто в массиве kolArr каждый элемент умножаете на 2? Т.е. у вас там сейчас записано:

    a = a + a;

    • Помечено в качестве ответа developers_s 27 марта 2013 г. 16:32
    27 марта 2013 г. 9:02
    Отвечающий
  • а так пойдёт 

    arrKolSumma[y] += kolArr[y];

    где,

    arrKolSumma объявлен глобально на весь класс


    Спасибо


    а вообше как сложить два массива?
    • Изменено developers_s 27 марта 2013 г. 16:40
    27 марта 2013 г. 16:35