Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для i_am_yxtu
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 6

Конкатенация массивов разных размеров

04.10.2015, 21:28. Показов 2700. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, товарищи. Суть такова:
есть два массива, например:
a {1 , 5 ,4}
b {2 , 2 }
Нужно получить массив сложением элементов с конца, т.е.:
c { 1, 5+2, 4+2} = c {1, 7 ,6}
Если массивы одинаковы, то я делаю с помощью Zip:
C#
1
one.kofs.Zip(two.kofs, (x, y) => x + y).ToArray();
а вот с массивами разных размеров как сделать?
p.s: не хочется циклом перебирать с конца и суммировать к большему массиву значения из меньшего. Должен быть проще вариант с минимум кода. Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2015, 21:28
Ответы с готовыми решениями:

Конкатенация char массивов
Нужно в массиве char заменить точку многоточием static void dotToPoints(ref char str) { char temp = new char; ...

Метод выполнить в 11 разных потоках, соответственно для разных входных массивов
Здравствуйте, начал потихоньку разбираться в многопоточном программирование и не могу до конца разобраться. Допустим есть некий метод в...

Сложения матриц разных размеров
написал программу для сложения матриц, но только одинаковых размеров, что нужно переделать чтобы добавить матрицу 3х2 до 2х3? в таком...

7
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
05.10.2015, 06:55
i_am_yxtu,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Linq;
 
namespace test
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            int[] a = { 1, 5, 4 };
            int[] b = { 2, 2 };
 
            if (a.Length > b.Length) {
                b = Enumerable.Range (0, a.Length - b.Length).Concat (b).ToArray();
            } else if ( a.Length < b.Length ) {
                a = Enumerable.Range (0, b.Length - a.Length).Concat (a).ToArray();
            }
 
            var c = a.Zip (b, (x, y) => x + y).ToArray ();
 
            Console.WriteLine (string.Join (" ", a));
            Console.WriteLine (string.Join (" ", b));
            Console.WriteLine (string.Join (" ", c));
        }
    }
}
1
 Аватар для i_am_yxtu
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 6
05.10.2015, 08:29  [ТС]
а если массив типа double?
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
05.10.2015, 16:48
i_am_yxtu, все так же

Добавлено через 49 секунд
i_am_yxtu,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Linq;
 
namespace test
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            double[] a = { 1D, 5D, 4D };
            double[] b = { 2D, 2D };
 
            if (a.Length > b.Length) {
                b = Enumerable.Range (0, a.Length - b.Length).Concat (b).ToArray();
            } else if ( a.Length < b.Length ) {
                a = Enumerable.Range (0, b.Length - a.Length).Concat (a).ToArray();
            }
 
            var c = a.Zip (b, (x, y) => x + y).ToArray ();
 
            Console.WriteLine (string.Join (" ", a));
            Console.WriteLine (string.Join (" ", b));
            Console.WriteLine (string.Join (" ", c));
        }
    }
}
1
 Аватар для i_am_yxtu
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 6
07.10.2015, 00:20  [ТС]
System.Collections.Generic.IEnumerable<i nt> не содержит определение для "Concat", а перегрузка лучшего метода расширения "System.Linq.Queryable.Concat<TSource>(S ystem.Linq.IQueryable<TSource>, System.Collections.Generic.IEnumerable<T Source>)" содержит несколько недопустимых элементов
Аргумент экземпляра: не удается преобразовать из "System.Collections.Generic.IEnumerable< int>" в "System.Linq.IQueryable<double>"

вот такое получаю
0
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
07.10.2015, 08:13
Лучший ответ Сообщение было отмечено i_am_yxtu как решение

Решение

C#
1
2
3
int[] s = new int[] { 1, 1, 1 ,1,1,1,};
 int[] g = new int[] { 1, 2,3 };
var f = Enumerable.Range(0, Math.Max(s.Length, g.Length)).Select(i => s.ElementAtOrDefault(i) + g.ElementAtOrDefault(i)).ToArray();
2
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.10.2015, 10:30
Лучший ответ Сообщение было отмечено i_am_yxtu как решение

Решение

jetyb, хороший вариант, но там с конца надо
Так что если немного доработать, получается правильный вариант:
C#
1
2
3
4
5
6
7
8
int[] a = { 1, 5, 4 };
int[] b = { 2, 2 };
int length = Math.Max(a.Length, b.Length);
var res = Enumerable.Range(0, length).Select(i => a.ElementAtOrDefault(i + a.Length - length) + b.ElementAtOrDefault(i + b.Length - length)).ToArray();
foreach (int i in res)
{
    Console.WriteLine(i);
}
1
 Аватар для i_am_yxtu
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 6
10.10.2015, 21:46  [ТС]
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2015, 21:46
Помогаю со студенческими работами здесь

Сравнение двух list разных размеров
Здравствуйте. Есть два List. В первом 50 записей, в другом 6 записей. Как можно проверить наличие записей из второго List в первом? Я...

Создать массив линий разных размеров
можно ли создать массив линий, тоесть массив в котором будут линии нарисованные(drawline) но разных размеров?

Проверить можно ли умножить две матрицы разных размеров
Дано две матрицы разных размеров(вводить с клавиатуры), нужно проверить можно ли их умножить, и если нельзя то вывести сообщение на экран.

Рисование линий разных размеров и цветов. Управление цветом в зависимости от условия
вопрос следующий у меня есть код в котором я рисую линии две нахожу их точки пересечения и так далее вопрос следующий я хочу чтоб после...

Квадратная решётка разных размеров в picturebox
Необходимо построить в picturebox квадратную решётку, в зависимости от введенных данных. То есть, если пользователь ввёл число 5, должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru