Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

lapd87 avatar lapd87 103 Точки

[Programming Fundamentals] Methods and Debugging - Lab - Problem {8} - Greater of Two Values

Ако може малко помощ със следния код:

https://pastebin.com/ciQ5FKiw

Judge ми дава 90/100 като се дъни на тест 3 и не виждам защо.

Реално мога да го направя по баламския начин с няколко метода и if, но не искам :)

Тагове:
0
Fundamentals Module
k.sevov avatar k.sevov 1077 Точки
Best Answer

Проблемът идва от някой char вход, тъй като някои символи се подреждат различно ако ги сравняваш като char-ове и като string-ове. Не съм наясно каква е причината да се сравняват по този начин, обаче. 

Edit: Може да се оправи като се ползва string.CompareOrdinal(str1, str2) вместо стандартното сравнение. https://stackoverflow.com/questions/24950635/difference-between-ascii-comparison-and-string-comparison

0
07/10/2017 19:12:48
lapd87 avatar lapd87 103 Точки

Аз също предполагах че е от char, но не знаех защо. Благодаря перфектно работи като заместих с

if (string.CompareOrdinal(input1, input2) >= 0)
0
k.sevov avatar k.sevov 1077 Точки

Все пак имай предвид, че това работи само защото в Judge не са сложили тест с вход стрингове, който да изисква тяхното си сравнение, тъй като с тази поправка просто правим и двете да се сравняват както char-овете. За да си работи наистина правилно е необходимо да проверяваме за типа данни от първия вход, така че той не е напълно излишен. 

0
lapd87 avatar lapd87 103 Точки

реално мога да направя проверка  по дължината на стринга, ако е 1 сравнявам като char иначе string

0
NikolayPopov avatar NikolayPopov 253 Точки

int, char, string са типовете, ти проверяваш за double. Смени го на инт и трябва да работи.

0
lapd87 avatar lapd87 103 Точки

Няма разлика. Попринцип бях с int, но реших да стане по-универсално, затова сложих double. На този код реално не му трябва типа данни да се чете. Нещо друго го мъчи.

0
NikolayPopov avatar NikolayPopov 253 Точки

Мисля че проблема е в това че compareTo може да връща различни неща за главни и малки букви в зависимиост дали е char или стринг.

'a'.CompareTo('A') връща 32

"a".CompareTo("A") -1

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