Loading...
i.minchev.qa avatar i.minchev.qa 34 Точки

7. Matrices - 1.06.2016

Здравейте, 

Тука съм натаманил принтирането на матрици  А и В - http://pastebin.com/6J1BPind

Условие:  https://softuni.bg/trainings/1367/programming-fundamentals-may-2016

                Раздел:  List and Matricies - Exercises

                Задача:   7.Matrices

Някой успял ли е да докара матрици C и D аз лично доста се мъчих над С, но още не мога да родя каква ще да е зависимостта.

Някой с нещо да помогне?

0
Programming Fundamentals
KrasimirPetkov avatar KrasimirPetkov 328 Точки
Best Answer

Ще се опитам да го обясня, но не знам дали ще ми се получи.

При тип C, ако вземем за пример матрица 3х3, трябва да се обходи по следния начин:

[2,0]

[1,0], [2,1] 

[0,0], [1,1], [2,2]

[0,1], [1,2]

[0,2]

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

При тип D (който според мен е по-лесен от C), имаш зададена посока на движение. Тоест движиш се в дадена посока, докато не стигнеш края на матрицата или клетка, която вече има зададена стойност (в конкретната задача стойност по-голяма от 0). Когато го направиш, сменяш посоката на движение. Т.е трябва ти цикъл с логически проверки в него.

Ето моят код. Предполагам че не е най-доброто решение и ще се радвам ако някой покаже по-добър вариант.

Матрици тип C и D: http://pastebin.com/t5AjBXgj 

Цялата задача: http://pastebin.com/gpZ1N7DE

4
01/06/2016 19:31:36
i.minchev.qa avatar i.minchev.qa 34 Точки

Благодаря ти много Красимире,

токлова много си томозих съзнанието как да го издокарам, че все още ми е трудно да схвана С то особено.

Благодаря за предоставените решения.

1
KrasimirPetkov avatar KrasimirPetkov 328 Точки

За нищо. Все пак затова сме във форума :)

Иначе пак да пробвам да ти обясня схемата на C.

Ще използвам матрицата от миналия ми пост с размери [3,3].

В тази задача, движението по диагонал се изразява с едновременно нарастване на реда и колоната с 1. Например [0,0], [1,1], [2,2]. Това движение приключва, когато достигнем максималния ред/колона на матрицата (защото иначе ще ни даде IndexOutOfRangeException). Когато сме достигнали максималната стойност на ред/колона се прехвърляме на друг ред/колона, където пак може да се движим по диагонал. Правим това, докато не запълним цялата матрица

[2,0] - начална позиция

[1,0], [2,1] - диагонал 1

[0,0], [1,1], [2,2] - диагонал 2

[0,1], [1,2] - диагонал 3

[0,2] - крайна позиция

 

[2,0] - началната ни позиция. Не можем да се движим по диагонал. Отиваме в началото на горния ред.

[1,0]  - тук може да се преместим веднъж по диагонал [1, 0] -> [1+1, 0+1] и стигаме [2,1]. Отиваме в началото на горния ред.

[0,0] - тук може да се преместим 2 пъти по диагонал. След това достигаме края. Няма редове нагоре, затова отиваме до съседната колона.

[0,1] - тук имаме една стъпка по диагонал и се местим на съседната колона.

[0,2] - тук сме обходили нашата матрица 3x3 и приключваме попълването

1
i.minchev.qa avatar i.minchev.qa 34 Точки

Оле човече,

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

Аз се чудя от къде нерде нерде елемент [0, 0] = 7 при зададена матрица 4 х 4.

И мисля  4 х 4 = 16 и си викам като махна 1 от всеки размер става 3 х 3 = 9, аха значи 16 - 9 = 7 (елемент 0, 0) обаче за другите това не работи иии.... т.н. То каква била работата :О .

Тази задача някакво судоку. 

А аз ще се опитам да дам време на мозъка си  да се пооправи малко, че в момента сигурно се сгърчил като стафида.

Много ти благодаря, че ми изясни логиката на формиране на матрицата от Type C.

 

 

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