[Подготовка за изпит]{Problem02} - String Matrix Rotation
Добре, и тука явно ще ми трябва малко помощ. Как да завъртя назъбен масив и да обърна редовете му в колони и колоните в редове ?
Добре, и тука явно ще ми трябва малко помощ. Как да завъртя назъбен масив и да обърна редовете му в колони и колоните в редове ?
В случая може да работиш с матрица, т.е. не назъбен масив, а двумерен.
Няма начин текущата матрица да го завъртиш, веднъж след като му зададеш размерности, не може да го преоразмеряваш. Трябва да създадеш нова матрица с нужните размери (т.е. обърнати размерности спрямо оригинала) и вече може да почнеш да я пълниш, което е и интересната част от задачата.
Има и вариант изобщо да не въртиш. Примерно подава ти се вход, че трябва да принтираш завъртяна на 180 или 540 градуса ... там където degrees % 360 == 180. Няма нужда да си правиш допълнителен масив, просто правиш следното.
Имаш един цикъл, който обикаля редовете отзад напред (matrix.GetLength(0) - 1) и друг, вложен в него, който прави същото за колоните, тогава пропъртито е GetLength(1) - 1. Принтираш matrix[row, col], и това ще сложи точно елемента, който ти трябва, най-горе вляво.
За другите два кейса може сам да си измислиш логиката, но те уверявам, че има такава : )
Здравейте,колеги.По-въпросната задача стигнах до завъртане на (90,180,270,360).Но тук нещо зациклих как при градуси,различни от тези да стигна пак до един от тях.Евентуално деление с остатък?
Идеи,препоръки и забележки ще са от полза.
Да, точно деление с остатък ти трябва. Виж малко по-нагоре какво съм писал.
Точно този коментар съм пропуснал:)Сега вече е 100/100!Мерси колега enevlogiev!
Ето го моето решение - http://pastebin.com/9C9xMV2w , дано е полезно на някой, дава 100/100 в Джъджа.
Толкова се мъчих с този назъбен масив, а то ставало изключително лесно с проста матрица. Мерси Kolev :)
Докарвам я до 40 точки тази задача. Ето го и кода http://pastebin.com/LMsw0xf2. Не знам къде греша. Ако може малко помощ.
Да дам и аз моето решение. Може да се оптимизира кодът и да се съкрати малко, иначе дава 100/100 :)
https://github.com/DiyanTonchev/SoftUni/blob/master/Homeworks/C%23/StringMatrixRotation/Program.cs
п.с. правя матрица като хвана дължината на най-дългата дума и я направя за широчина, респ. височина на матрицата в в зависимост от градусите и пълня със спейс където не ми стига дължината на думата.
КОД за StringMatrixRotation
И моето решение е доста подобно на повечето. Единствено за 180 градусовото въртене реших да разнообразя - не бях ривърсвал лист от листове :D
for (int i = 0; i < array.Count; i++)
{
array[i].Reverse();
}
array.Reverse();
Моето решение се различава от тези, които видях тук за това ще дам линк ако на някой му е интересно.
Не е най-качественето като бързодействие. Правят се някои излишни стъпки - наясно съм. Както казах качвам го само, защото е малко по различно от тези, които видях.
Когато принтираш си запазваш и празните места, иначе да, мисля, че си ме разбрал.