Loading...
dbunalov avatar dbunalov 7 Точки

И на мен "Съдията" ми дава абсолютно същото 70/100.

Поразгледах авторския код и видях (доколкото му разбирам), че при делението n2 се преобразува в double, явно за да е вярно делението. И понеже при пускане във Вижуъл студио кода му работи по абсолютно същия начин като моя, реших да видя съдията какво ще даде на неговия код... ами какво да кажа -- 70/100.

Така че, явно грешката е неоткриваема! Считай за тази задача 70/100 == 100/100

моя код за задачата 

0
07/07/2016 15:05:12
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Здравей,

Разсъждения от сорта на "грешката е неоткриваема" са много неправилни в този случай.

Има минимален шанс нещо в задачата/тестовете да е неточно. Като отвориш резултатите, ще забележиш че много хора имат 100/100 точки. Тоест - конкретният случай не е такъв.

 Ако погледнеш кода си, ще видиш че имаш пропуски и неточности, поради Copy/Paste или невнимателно прочитане на условието.

 

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

В твоето решение, отпечатваш "even/odd" навсякъде - това се отчита от Judge като грешка.

 

В условието пише: Ако операцията е деление: „{N1} / {N2} = {резултат}“ – резултата е фораматиран до вторият знак след дес.запетая.

При теб това е пропуснато, което Judge също ще го отчете като грешка.

 

Може да има и други пропуски, но не съм гледал обстойно, тъй като решението ти е доста дълго. Надявам се тези двете неща да помогнат.

В случай, че искаш работещо решение, от което да гледаш: http://pastebin.com/BtA71dXL

Успех със задачата!

1
07/07/2016 16:23:18
dbunalov avatar dbunalov 7 Точки

Здравей,

Благодаря ти за съвсем правилната критика! (не го казвам, за да те засегна ... наистина ми помогна).

Благодаря ти наистина, защото след като ми писа си прегледах отново кода и да открих тъпите 2..3 грешки и вече имам 100/100 с този код :)

Твоя код ми харесва, но някой неща не са ми ясни как и защо са ползвани... понеже не съм ги чел (явно), а и не са обяснявани на лекциите които съм изгледал.

 

Отново ти благодаря за съветите!

 

1
07/07/2016 17:24:20
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Радвам се, че си се справил. Ако има нещо неясно, винаги можеш да питащ и ще обяснявам. В конкретната задача, предполагам, че става въпрос за някое от следните неща:

1. char operation = char.Parse(Console.ReadLine()); - това е начин, да прочетеш отделен символ от тип char. Използвам го, тъй като не ни трябва цял string, а само един символ.

2. Console.WriteLine($"{a} + {b} = {a + b} - " + ((a + b) % 2 == 0 ? "even" : "odd")); - "$" в началото ни позволява вместо да използваме placeholder-и от типа "{0}", а след това да декларираме какво да отиде на мястото на "0", директно да изписваме променливите/уравненията в скобите, като например "{a + b}". По-известно е като string interpolation. Могат да се видят доста примери в интернет.

(a + b) % 2 == 0 ? "even" : "odd" е така нареченият Ternary Operator. Реално, представлява по-кратък начин да се провери дадено условие и да се върне даден резултат: <условие> ? <резултат ако е изпълнено> : <резултат ако не е изпълнено>. В конкретната задача, проверявам дали резултатът от избраната операция е четен или нечетен. Абсолютно същият ефект може да се постигне и с if-else, но се иска маалко повече писане (а мен ме мързи).

3. Console.WriteLine($"{a} / {b} = {(double)a / b:F2}"); - F2 означава, че искаме да се показват два знака след десетичната запетая.

Извинявай, в случай че повтарям неща, които вече знаеш. Просто смятам, че е добре да разясня задачата максимално, тъй като все пак това е идеята на форума - да се учим. Ако има нещо друго, ще се радвам да ти бъда полезен.

0
dbunalov avatar dbunalov 7 Точки

Благодаря отново,

точно това по т. 2: Console.WriteLine($"{a} + {b} = {a + b} - " + ((a + b) % 2 == 0 ? "even" : "odd"));

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

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

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

Пожелавам ти всичко най-добро и отново благодаря!

1
LardaX avatar LardaX 15 Точки

Доста добро обяснение. Като гледам съм записал само (double) без да му давам :F2, тоест може би това ми отчита като грешка, тъй като ще го сметне десетично число, но няма да закръгли. След малко ще го пробвам - предполагам, че това трябва да е проблема.

А гледах, че в Console.WriteLine си използвал "..." + Ternary Operator, тоест + може да се използва освен за залепяне на стойности, стрингове и т.н. и за такъв тип операции? И реално в случая ти залепва отговора "even/odd", с което си спестяваш писането на отделен ред на първата част с Console.Write ?

1
KrasimirPetkov avatar KrasimirPetkov 328 Точки

Точно така. В конкретния случай Ternary Operator-a връща string, който се залепя с "+" към останалия текст.

0
LardaX avatar LardaX 15 Точки

Благодаря отново за обяснението. И между другото точно форматирането до 2 знак се оказа пропуска в кода. С :F2 го прие на 100/100. Направих си няколко опита и ми направи впечатление, че :f2 работи само ако преди и след ":" няма разстояние, тоест :f2 и прилепено към последната променлива.

1
StanimirStankov avatar StanimirStankov 18 Точки

Благодаря на Красимир Петков.

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

 

1
Iliev88 avatar Iliev88 39 Точки

Здравейте,

Някой може ли да ми погледне кода - http://pastebin.com/P3xQ5dnr и да каже защо джъджа ми дава 90/100 ?

 

п.с. погледнах тестовете и този дето ми бърка е Test 1

55 / 5 = 11, което програмката ми го смята и изписва вярно...

0
20/09/2016 14:57:57
bMedarski avatar bMedarski 148 Точки

Колега проблема ти е в Math.Round.

Смени -  Console.WriteLine("{0} / {1} = {2}", n1, n2, Math.Round(result, 2));

с това   - Console.WriteLine("{0} / {1} = {2:F2}", n1, n2, result);

0
Iliev88 avatar Iliev88 39 Точки

Благодаря колега.

Стана така. Макар, че в конзолата ми изкарва 55 / 5 = 11.00, а теста е = 11, но в джъджа мина.

0
paveliliev90 avatar paveliliev90 74 Точки

Ако някой може да погледне моя код и да ми каже защо бачка на 90/100 ще съм много благодарен :) https://pastebin.com/RP2LKu12

0
Joro_Paspalev avatar Joro_Paspalev 23 Точки

Здравейте,

кода на Красимир Петков е радост за очите - структуриран, кратък и ясен. Браво!

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

Аз реших задачата по съвсем друг начин чрез използване не If - else... (ето и линк към кода: https://pastebin.com/6QFNvRML, ако на някой колега му е нужен за вбъдеще).

Искам само да вметна че логиката ми бе на 100% вярна но джъджа ми върна 48/100.

Това е само защото copy / paste-нах, това което трябва да се отпечата на конзолата от Word-ския файл с условието.

Отне ми доста време да открия грешката (а и трябваше да пренапиша всичко отначало) - НЕДЕЙТЕ ДА КОПИРАТЕ.

Пишете си кода сами за да не си късате нервите като мен.

Поздрави,

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