Loading...
res7art avatar res7art 2 Точки

4. Array Rotation

https://pastebin.com/5Za9yXjU

 

Здравейте, имам кода от задачата, но не го разбирам.

Въпроса ми е следния:

Ако с " numbers[numbers.Length - 1] = firstNumber; "

зимаме последния елемент от масив, тогава защо при този for цикъл при дебъг

               for (int j = 0; j < numbers.Length - 1; j++)
               {
                   numbers[j] = numbers[j + 1];
               }

"j" приключва още преди пред последния елемент ? 

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

0
Fundamentals Module
Dimitar_Petkov_Petkov avatar Dimitar_Petkov_Petkov 169 Точки
Best Answer

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

Тук идеята е да се "тренира" индексация на масиви. Тъй като  на индекс 0 е първият елемент, така за да достъпиш последния респективно трябва да ползваш (ако масива има n елемента) n - 1. И тъй като в случая "въртим" данните в масива, така че стойността на текущия индекс да бъде равна на стойността на текущия + 1. Очевидно ако итерираме до n - 1, последното присвояване ще опита да вземе стойност от индекс n - 1 + 1,  т.е от n. Което очевидно излиза извън текущия масив и ще предизвика грешка. Затова for цикъл е до n - 1 без равенство, т.е до  n - 2 реално. Стойноста за n - 1 (последната клетка на масива) се осъществява чрез : numbers[numbers.Length - 1] = firstNumber .

0
res7art avatar res7art 2 Точки

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

0
krum_43 avatar krum_43 750 Точки

Ами не забеляза ли,че въртим цикъла до  j < numbers.Length - 1,т.е не присвоявяме нищо на последният елемент на масива.

На последният елемент сетваме стойността на първия.

:)

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