Loading...
g.antonov avatar g.antonov 20 Точки

[Homework] Methods - Problems 1-5

Problem 1 - http://pastebin.com/jyQRC3vF

Problem 2 - http://pastebin.com/iAPF8DnZ
Ако има някаква тънкост, тя е да се сетим да използваме .ToCharArray() за да разбием числото на символи. Оттам нататък да извадим последния елемент то този char array и да го map-нем към индекс на масив би трябвало да не е проблем. :)

Problem 3 - http://pastebin.com/FDNWE0jg
Методът ни приема масив и позиция за която да тества, понеже имаме цикъл в Main метода и викаме нашият метод при всяка итерация на този цикъл. Приемаме, че докато не се докаже противното, числото не е по-голямо от съседите си. Първата и последната позиции са особени, и за тях правим различни проверки, за да не излезем без да искаме от границите на масива като тестваме за предишен или следващ елемент, който не съществува при проверка на, съответно, първия и последния елемент. Ако елементът не е нито първи, нито последен, проверяваме и двата му съседа. Ако условието е изъпълнено, isBigger става true. Връщаме стойността на isBigger.

Problem 4 - http://pastebin.com/9TZ5eZJu
Почти същата като задача 3, само че тук въртим цикъла в рамките на нашия метод, а не както е в зад. 3 в Main(). Излизаме от цикъла и връщаме стойността при първия намерен елемент, който да удовлетворява условието, т.е. да е по-голям от съседните му елементи.

Problem 5 - http://pastebin.com/3B1E23d7
За моя изненада, оказа се че е възможно да превърнем double в sring, и след това в масив от char и точката му да се запази. Обръщането наобратно на елементите в един масив става с един цикъл. След това по обратния път - създаваме нов string, който получава за стойност целият char масив. Не получаваме error защото string-ът и без това си е масив от chars. Много удобно :) парсваме и отпечатваме. Не съм тествал, но това най-вероятно няма да работи добре с отрицателни числа.

Тагове:
1
C# Advanced 22/09/2015 23:07:35
djc_bg2015 avatar djc_bg2015 923 Точки

Относно 5 задача, ето ти вариант с работещи отрицателни числа:

http://pastebin.com/4hR07C1Z

2
22/09/2015 22:12:22
kidroca avatar kidroca 117 Точки

Здравей,

Тези задачи повече ми приличат да са от Homework: Methods winkwinkwink

Ето и моите решения, повечето от задачите успях да ги направя с generic-и, както и 6-та "Number Calculations", за нея ползвах една допълнителна библиотека която дава основни математически операции с generic-и. 7-ма (Generic Array Sort) пък я направих да работи вместо със Array, да работи с интерфейса IList - така може да работи не само със generic array, но и със други индексирани колекции като List<T>

https://github.com/kidroca/Advanced-CSharp-2015-Methods

2
23/09/2015 00:15:02
RoYaL avatar RoYaL Trainer 6849 Точки

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

2
cap7ainjack avatar cap7ainjack 20 Точки

Някой успя ли да реши Problem 7.  * Generic Array Sort ?

Аз опитвам от известно време, но имам трудности. Ще се радвам, ако някой сподели.

Иначе като идеята което се опитах да подкарам е с IList<T>, като обърна 3те масива в листове и след това в метода имплементирам bubble sort, но за сега ми изглежда че няма да стане по този начин.

Това е първият лист List<int> numList = new List<int>(new int[] { 1, 2, 3, 4 ,5, 1, 0, 5} ); и след това извиквам

SortArray<int>(numList);

по съшият начин правя и другите. Метода има такъв начален вид, но до тук съм в момента :

    static void SortArray<T>(IList<T> coll)
    {        
            for(int i = 0; i < coll.Count; i++)
            {
                if (coll[i] > coll[i-1])
                {                    
                }

            }           
    }

 

Само го започнах, но ми казва, че не мога да използвам > от операнди Т и Т. Някой знае ли дали изобщо това е правилен начин :)

0
25/09/2015 10:46:07
RoYaL avatar RoYaL Trainer 6849 Точки

Да тъй като е Generic, то не знаеш какъв тип биха ти подали - ако ти подадат например два обекта от class Rock, то какво би значело > или < за тях? Ако не са override-нали оператора, няма как да го ползваш.

Можеш да кажеш, че искаш задължително T-тата да са IComparable и след това да плозваш CompareTo. Ще върне 0 ако са равни, по-малко от 0 ако левият е по-малък от десния и по-голямо от 0, ако левият е по-голям от десния.

0
cap7ainjack avatar cap7ainjack 20 Точки

Мерси RoYal,

Тук https://msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs.110).aspx намерих един пример за IComparable и попрочетох какво е, само че не успавяам да го имплементирам това аз. 

Ще чакам ако някой си решението.Че много време го мъча вече това нещо а и много непознати неща станаха

 

0
Bogdan1899 avatar Bogdan1899 50 Точки

Здравейте и от мен :)

http://pastebin.com/pWxUdh1q Това е моето решение на задача 7, но не съм сигурен дали напълно отговаря на условието. Идеята ми е да проверим елементите от масива object първо какъв тип са и след това да ги преобразуваме, като впоследствие вече ги сортираме. Не можах да направя Output - a  на датата само, така че който знае как да стане може да помогне, ако желае :)

 

Поздрави!

0
25/09/2015 16:50:56
Filkolev avatar Filkolev 4482 Точки

Не е това, което се иска в задачата. Идеята е да може да се сортират всякакви обекти, например създадени от потребителя такива като Student. Потърси generic methods, също и как да подсигуриш, че даден метод ще работи само с обекти, които могат да се сравняват.

1
Bogdan1899 avatar Bogdan1899 50 Точки

Ок. Започваме да решаваме отново тогава.

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