Programming Fundamentals -> Exercises: Arrays -> Rotate and Sum
Здравейте,
Моля за помощ със следния код: http://pastebin.com/de4m4hsp
Грешката си я намирам, но не знам как да я оправя. Не знам защо, но като върти вътрешния цикъл (с j) втори път, numbers се презаписва заедно с temp, което би трябвало да става едва след като се излезе от вътрешния цикъл. Така първата цифра на втория ротейтнат масив става грешна :(
Благодаря предварително :)
Благодаря за отговора :)
Съжалявам, но или не разбирам или не го правя както трябва (направих темп инт, а не инт масив и го изкарах извън вътрешния цикъл, но решението е грешно). Аз с F10 разбрах къде ми е грешката, но от снощи се мъча и все не се получава :(
Ще съм ти благодарна, ако ми поправиш решението :)
var arrayOfInts = string.Format(Console.ReadLine());
var k = int.Parse(Console.ReadLine());
var numbers = arrayOfInts.Split(' ').Select(int.Parse).ToArray(); - 1 2 3 4
var result = new int[numbers.Length];
for (int i = 0; i < k; i++)
{
var temp = numbers[numbers.Length-1]; - това ти е последният елемент /4/
for (int j = numbers.Length - 1; j > 0; j--) - j първо ти е 4 и цикълът ще завърши: 1 1 2 3
{
numbers[j] = numbers[j - 1];
}
numbers[0] = temp; - на мястото на нулевия елемент [0] ще отиде числото 4 - 4 1 2 3
Console.WriteLine(string.Join(" ", numbers)); - тук ще си го видиш реално моментното състояние на масива
}
Направи го при k=2, например и ще видиш как се случва. Ти използваш още един масив - result и той ти идва в повече, защото е излишен за този етап от задачата, по-лесно е да работиш с първоначалния масив и само да местиш последната цифра на първо място.
Като видиш, че ти работи коректно, си продължи алгоритъма. При мен е така: http://pastebin.com/M3gZLa6m
Най-сетне, гледайки кода ти, осъзнах, че не съм прочела условието правилно :D :D :D
Благодаря ти!
Поправеното ми решение:
http://pastebin.com/de4m4hsp