Loading...
ugdaka avatar ugdaka 4 Точки

Debugging Exercise: Sequence of Commands

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

опитавам се да реша  Sequence of Commands задачата и не можах да измисля изместванията наляво и насясно... може ли малко помощ?
Ето го и кода: http://pastebin.com/rybUciPe

Благодаря, предварително :)

0
Programming Fundamentals
Nikola_Andreev avatar Nikola_Andreev 671 Точки

Добре щом не си успял да го измислиш ще ти дам направо готов код, но само за единия случай.

private static void ArrayShiftRight(long[] array)
        {
            long a = array[array.Length - 1];
            for (int i = array.Length - 1; i >= 1; i--)
            {
                array[i] = array[i - 1];
            }
            array[0] = a;
        }

Надявам се за ArrayShiftLeft ще можеш и сам да го направиш.

   

 

-2
msmilkoff avatar msmilkoff 338 Точки

Подсказка: Ако искаш да преместиш елемент по масив наляво (с превъртане) - arr[i] = arr[(i +1) % arr.Length()] 

2
ugdaka avatar ugdaka 4 Точки

Да и аз това си мислех, но не можах да се сетя как точно да стане, но нещо не можах да го направя... пак не работи по този начин.

0
22/05/2016 20:57:54
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Друг вариант с по-малко писане на код и без цикли (използва System.Linq):

Отместване наляво:

int[] a = { 1, 2, 3 };
a = a.Skip(1).Concat(a.Take(1)).ToArray();    // Result: a = [ 2, 3, 1 ]

 

Отместване надясно:

int[] a = { 1, 2, 3 };
a = a.Skip(a.Length - 1).Concat(a.Take(a.Length - 1)).ToArray();   // Result: a = [ 3, 1, 2 ]

 

Успех със задачите :)

4
msmilkoff avatar msmilkoff 338 Точки

Не знам дали е правилно в Programming Fundamentals да се използват тези готови методи, ако човек има затруднения да разбере как точно работят отвътре. По-добре да си реши задачките само с if и for, докато си развие алгоритмичното мислене.
Освен това, ако декомпилираш въпросните методи, ще видиш, че вътре има множество цикли и функционалното решение едва ли е най-оптималното. Например .Concat() прави нов масив и прехвърля всички елементи от стария в новия + допълнително зададените като аргумент в скобите. Да, изглежда по елегантно така на един ред, но не мисля, че е най-подходящия вариант за начинаещи.

0
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Аз показвам един от вариантите. Всеки може сам да прецени как смята за удачно да си реши задачата. Във всички случаи е от полза, ако знаеш още един вариант за решение на даден проблем :) Така имаш по-голям избор и можеш да се разровиш за плюсовете и минусите на всеки от начините.

1
r3v3nan7 avatar r3v3nan7 365 Точки

Здравей :) Ако желаеш разгледай и моето решение. Може нещо да ти е полезно https://github.com/pkindalov/Programming-fundamentals/blob/master/ArrayTest/ArrayTest.cs

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