Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> операции с массивом 
:(
    Опции темы
vthm
Дата 29.10.2014, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.10.2014

Репутация: нет
Всего: нет



есть массив

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}
]

помогите

PM MAIL   Вверх
WERITAS
Дата 29.10.2014, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



 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();
        }       
    }
}




--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.