Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > операции с массивом


Автор: vthm 29.10.2014, 00:20
есть массив

var massiv = [
{1,2,1},
{1,2,2},
{1,3,2},
{2,3,3},
{2,3,3},
{1,5,5}
]

нужно обьединить те под массивы, у которых первый и второй елемент одинаковы, а третий елемент добавить друг к другу

то есть, получится
{1,2,3} = {1,2,1} + {1,2,2}
{2,3,6} = {2,3,3} + {2,3,3}

var result = [
{1,2,3},
{1,3,2},
{2,3,6},
{1,5,5}
]

помогите

Автор: WERITAS 29.10.2014, 07:46
 smile 
Код

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {

            int[,] massiv = {       {1,2,1},
                                    {1,2,2},
                                    {1,3,2},
                                    {2,3,3},
                                    {2,3,3},
                                    {1,5,5}
                            };


            int len = massiv.GetLength(0);
            int cnt = massiv.Length / massiv.GetLength(0);

            int[] auxil = new int[len];
            for (int i = 0; i < auxil.Length; i++)
                auxil[i] = -1;
                 
            int k = 0;
            for (int i = 0; i < len; i++)
            {
                bool aux = false;
                for (int l = 0; l < auxil.Length; l++)
                    if (i == auxil[l])
                    {
                        aux = true;
                        break;
                    }
                if ( aux )
                    continue;

                int first = massiv[i, 0];
                int second = massiv[i, 1];

                for (int j = 0; j < len; j++)
                {
                    if (j == i)
                        continue;

                    if (massiv[j, 0] == first && massiv[j, 1] == second)
                    {
                        massiv[i, 2] += massiv[j, 2];
                        auxil[k] = j;
                        k++;
                    }
                }
            }

            Array.Resize(ref auxil, k);

            int[,] tmp = new int[len - auxil.Length, cnt * (len - auxil.Length)];
            int r = 0;
            for (int i = 0; i < len; i++)
            {
                bool aux = false;
                for (int l = 0; l < auxil.Length; l++)
                    if (i == auxil[l])
                    {
                        aux = true;
                        break;
                    }

                if (!aux)
                {
                    for (int j = 0; j < 3; j++)
                        tmp[r, j] = massiv[i, j];
                    r++;
                }
            }
            massiv = tmp;
            
            for (int i = 0; i < len - auxil.Length; i++)
                Console.WriteLine("{0}-{1}-{2}", massiv[i, 0], massiv[i, 1], massiv[i, 2]);
            

            Console.Write("Press any key to continue...");
            Console.ReadLine();
        }       
    }
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)