Софтуерно Инженерство
Loading...
+ Нов въпрос
maya.peneva avatar maya.peneva 18 Точки

Programming Fundamentals -> Exercises: Arrays -> Rotate and Sum

Здравейте,

Моля за помощ със следния код: http://pastebin.com/de4m4hsp

Грешката си я намирам, но не знам как да я оправя. Не знам защо, но като върти вътрешния цикъл (с j) втори път, numbers се презаписва заедно с temp, което би трябвало да става едва след като се излезе от вътрешния цикъл. Така първата цифра на втория ротейтнат масив става грешна :(

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

Тагове:
0
Programming Fundamentals
NonaG avatar NonaG 111 Точки

Здравей! Трябва тази temp да я изкараш преди вътрешния цикъл (temp трябва да е int, няма нужда да пазиш стойностите й в масив). Идеята е: последното число от масива отива в temp, завърташ го и temp отива на нулева позиция в масива. И само завъртането е вътре във вложения цикъл. Ако искаш, мога да ти пейстна твоето решение поправено, но ще пишеш. Направи F10  и вход 1 2 3 4 със завъртане 1, и проследи постъпково какво ти се случва с масива. :)

0
02/02/2017 11:19:00
maya.peneva avatar maya.peneva 18 Точки

Благодаря за отговора :)

Съжалявам, но или не разбирам или не го правя както трябва (направих темп инт, а не инт масив и го изкарах извън вътрешния цикъл, но решението е грешно). Аз с F10 разбрах къде ми е грешката, но от снощи се мъча и все не се получава :(

Ще съм ти благодарна, ако ми поправиш решението :)

0
NonaG avatar NonaG 111 Точки

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

1
02/02/2017 12:56:41
maya.peneva avatar maya.peneva 18 Точки

Най-сетне, гледайки кода ти, осъзнах, че не съм прочела условието правилно :D :D :D
Благодаря ти!

Поправеното ми решение:
http://pastebin.com/de4m4hsp

0
ivan.d.uzunov avatar ivan.d.uzunov 21 Точки

http://pastebin.com/dWccbD89

Ето и моето решение. :)

0