Loading...
Bogdan1899 avatar Bogdan1899 50 Точки

[Homework] Arrays, Lists, Stacks, Queues - Problem 2

Здравейте, Колеги!

От известно време се занимавам с посочената задача и се опитвам да разбера защо "Swap" метода не работи. Вече съм решил задачата, като съм разменил цифрите с помощта на трета променлива, но искам да го направя и чрез "Swap" метод. Ще съм благодарен, ако някой погледне къде е проблема.

 

http://pastebin.com/EeYPHtk0

Тагове:
1
Fundamentals Module 20/09/2015 14:40:35
kidroca avatar kidroca 117 Точки

Здравей,

Метода работи но не по начина по който искаш,

ако си направиш един Console.WriteLine(currNum + " " + currNum2) ще видиш че са се разменили

int currNum = numArr[i]

int currNum2 = numArr[min];

Swap(ref currNum, ref currNum2);

currNum е int от стойността във numArr[i] и curNum2 е int от стойността във numArr[min] 

те придобиват стойността от масива но не пазят референция към индекса от масива от който са я взели, след тоав ги подавап по референция но тази референцията е до curNum a не до  numArr[i]

За да се промени стойността във самия масива в случея трябва да я посочиш по индекс:

или след метода Swap() да кажеш numArr[i] = curNum и съответно numArr[min] = currNum2 или:

Пробвай със този метод:

като съответно подадеш масива и индексите които искаш да се разменят

static void Swap<T>(T[] arr, int i, int j)
    {
        T temp = arr[i];

        arr[i] = arr[j];
        arr[j] = temp;
    }

Самият масив винаги се подава като референция, но за изваденни данни от него зависи от какъв тип са те.

В товя случей ги подаваш по референиця но референцията не е до данните масива.

1
20/09/2015 15:45:04
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.