Loading...
Maria1609 avatar Maria1609 1 Точки

Създаване на нов масив от елементите на два предходни

Здравейте,

Как мога да създам нов масив от елементите на два предходни? Например имам:

int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6};

Новият трябва да е:
int arr3[] = {1, 2, 3, 4, 5, 6};

Благодаря предварително!

Тагове:
0
Fundamentals Module
svetoslav_0 avatar svetoslav_0 1009 Точки

Ето един начин:

int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();
1
Maria1609 avatar Maria1609 1 Точки

Мерси - много лесно било! Ако знаеш нещо подобно и за Java, ще съм ти задължена! :)

0
Maria1609 avatar Maria1609 1 Точки

Благодаря! Сигурна съм, че е така, както казваш, но аз съм още на масиви. Linq и Lists са по-нататък в лекциите.

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ами с масиви ръчно е малко по-тегаво. Най лесно е с лист,защото ти е wrapper отгоре и можеш да си  добавяш махаш другия вариант да го правиш ръчно,е грубо ще е нещо от сорта на

Int size=arr1.length+arr2.length;

var arrnew=arr[size];

int current=0;

for (int i=0;i<arr1.lenght;i++)

arrnew[current]=arr1[i];

current++;

for(int j=0;arr2.lenght;j++)

arrnew[current]=arr2[j];

current++;

общо взето тегава история Сигурно мога да измисля и по смислени варианти и идей но в момента това се сещам.

И бтв това че не си ги взела, не означава че не може да продължаваш сама и напред.Така или ииначе в един момент информацията и нещата стават толкова много.Добре е да бягаш напред,ако ще караш на това не сме го взели още..Ами да колегите с това мислене отпаднаха вече.

Това го казвам като приятелски съвет. В идеалния случай ще си изрешила и изгледала предното издание на курса преди да почнеш модула.А най-лошия поне изгледала лекцийте.Но не знам/не сме го учили още това не е правилния начин на мислене.

0
k.sevov avatar k.sevov 1077 Точки

Ако сме изрешили и изгледали предното издание на курса, то защо въобще ще караме курса? Има предостатъчно неща за гледане и учене, за да не повтаряме едно и също според мен. По-скоро бих препоръчал свободното време да отива за затвърждаване/припомняне на стари знания ако има нужда или учене от други източници (за по-голяма дълбочина на вече взет материал или нова информация). Гледането напред също е валиден вариант, ако целта е да се справим добре с курсовете, но съвсем не е единственият възможен. 

2
AtanasovAtanas avatar AtanasovAtanas 414 Точки

Абстрахирайте се от LINQ, защото е нещо специфично за C#. 

Разбий си проблема на малки проблеми:

1. Трябва ми нов масив. Каква ще е неговата дължина?
- int length = arr1.Length + arr2.Length;

2. Следващата стъпка е да си направя празния масив.
int[] result = new int[length];

3. Трябва да налея и двата масива в общия. Мога да обходя всеки масив по отделно, но как ще знам до къде съм стигнал в общия масив. Имам два варианта - да си направя променлива, с която да следя на кой индекс съм или да използвам някакви изчисления.
3.1 Променлива с индекс

int index = 0;
for (int i = 0; i < arr1.Length; i++)
{
    arr[index++] = arr1[i];
}
for (int i = 0; i < arr2.Length; i++)
{
    arr[index++] = arr2[i];
}

3.2 Изчисление използвайки индекса на втория цикъл и дължината на първия.

for (int i = 0; i < arr1.Length; i++)
{
    arr[i] = arr1[i];
}
for (int i = 0; i < arr2.Length; i++)
{
    arr[i + arr1.Length] = arr2[i];
}

Поздрави! :) 

2
Maria1609 avatar Maria1609 1 Точки

Поздравления как хубаво си го обяснил! Аз успях само с дължините без индекси. Виж:

int[] arr = new int[arr1.Length + arr2.Length];

            for (int i = 0; i < arr1.Length; i++)
            {
                arr[arr.Length - arr2.Length] = arr1[i];
                Console.Write(arr[arr.Length - arr2.Length] + " ");
            }

            for (int i = 0; i < arr2.Length; i++)
            {
                arr[arr.Length - arr1.Length] = arr2[i];
                Console.Write(arr[arr.Length - arr1.Length] + " ");
            }

1
24/09/2018 21:04:41
k.sevov avatar k.sevov 1077 Точки

Има начини да се направи с някакви готови методи, но за тех модула ти препоръчвам да се опитваш да си ги правиш "ръчно" нещата в началото, за да свикнеш с логиката на масивите и листовете, индекси и т.н. Примерно тук може да си направиш нов масив с големина сбора от двата, да прехвърлиш първия в него с цикъл и след това да прехвърлиш и втория в останалите места. 

1
Maria1609 avatar Maria1609 1 Точки

Абсолютно съм съгласна! Просто в началото е трудничко :)

0
Maria1609 avatar Maria1609 1 Точки

Ето още един лесен начин:

int[] newArr = new int[arr1.length + arr2.length];

int j = 0;
for (int i = 0; i < newArr.length; i++) {

    if (i < arr1.length) {
        newArr[i] = arr1[i];
    } else {
        newArr[i] = arr2[j];
        j++;
    }

    System.out.print(newArr[i] + " ");
}
-1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.