[Homework] Exception Handling (Nov 2015) - Решения
Здравейте колеги,
ето и решенията на домашното за ексепшъни. Ще ми е ного интересно да споделите и вашите решения на задача 2 :)
https://github.com/vdonchev/OOP-ExceptionHandling-Homework
Поздрави!
Здравейте колеги,
ето и решенията на домашното за ексепшъни. Ще ми е ного интересно да споделите и вашите решения на задача 2 :)
https://github.com/vdonchev/OOP-ExceptionHandling-Homework
Поздрави!
Моят вариант:
https://github.com/ROSSFilipov/CSharp/tree/master/OOP/SoftUni-Homework/ExceptionHandling
Макар, че съм модифицирал всички задачи и данните се въвеждат една по една докато потребителя не въведе нещо коректно.
Ето моето решение на 2-рата задача:
Нарушена точка 12 от Правилата.
Мисля, че отговаря точно на условието.
Това няма да работи, защото винаги долната граница ще ти е 1 ако не греша. А по условие на всяко следващо число трябва минималната граница да е предходното.
Мда, прав си. Не съм видяла тази подробност в условието ;) мерси за забележката.
Много се извинявам, но ако на някой му се занимава може ли да ми поясни втора задача ,нищо не разбрах от условието :)
Здравейте,
Ето моя вариант:
https://github.com/AleksandarSt/SoftUni-Homeworks/tree/master/OOP-Exception-Handling
Ще се радвам на коментари по решенията.
На първа задача при отрицателно число мисля че ще принти NaN и след това грешката заради иф-а (djc_bg2015)
Здравей, ето аутпута при отрицателно число:
-55
Invalid number
Good bye
Press any key to continue . . .
Ето и моята задача 2
Искаше ми се да избегна това повторение на кода във всичките catch блокове, но не ми хрумва как, ще се радвам да чуя ако някой има идея :)
А защо не го изнесеш в метод?
Например:
public void MethodName(Exception ex, int start, int end) {
Console.WriteLine(ex.Message);
Console.WriteLine("Try again: ");
return EnterNumber(start, end);
}
Да, това ще свърши работа, мерси :)
Ето и моето решение на зад. 2, не знам доколко съм спазила принципите на ООП:
https://gist.github.com/radi81/d74abe500682f5a98052
Кода изглежда добре. Лично на мен ми хареса варианта с counter-a и while loop-a при въвеждането на данните към зад 2(сега ме е яд, че не се сетих да го направя така :D). Към задача 2 имам и 1-2 предложения за подобрение/оптимизация:
- дръпни List<int> enteredNumbers в proprty и/или field. Като идея метода да връща list от въведените стойности е добра, но в сегашния вид при всяко извикване на ReadNumber се създава нова инстанция на list-a и данните се губят.
- в Main разположи counter-a точно под ReadingNumbers.ReadNumber(Console.ReadLine());. Така ако имаш грешен вход програмата ще гръмнe и директно ще скочи на catch блоковете, игнорирайки реда counter++;
- хвани ги и другите excepion-и, така програмката ще си върви дори някой някъде да сгреши.
Успех!
Ето го и моето творение.
Не знам дали е много добра идеята да се се самоизвиква функцията в catch блока, но нали още се учим, видях възможността и реших да се възползвам. :)
Кодът е усложнен ненужно и принтира при някои ситуации повече от едно съобщения, а не се принтира най-важното - коренът на коректно въведено число :)
Да наистина има бъг. Сега май го оправих.
Мерси за помоща. :)
Добро решение. Препотъка - няма нужда от while цикъл в Main метода, както и да вкарваш като параметър int[] array в метода ReadNumber(), остави го само ReadNumber(int start, int end).
Може и да вкараш и 10 в константа: private const int Count = 10;