Loading...
kvita avatar kvita 0 Точки

Защо в задачата за рожденния ден се получава разлика в резултатите след изпълнение на програмата и след пускане на програмата Judge.

Защо след пускане на програмата тя изкарва верен резултат и с двата примера и не дава грешки, а в Judge системата дава грешни отговора. При изпълняване на програмата на стъпки тя пак дава верни отговори, но в Judge отговорите винаги са грешни. По-долу съм пуснал и двата копия и от двата екрана - първият е от Visual Studio, a вторият от Judge преди изпълнение на теста. И 10-те теста, които съм пускал дават грешка в резултата. Някой има ли идея на какво може да се дължи това. Аз във всеки случай не мога да открия никаква грешка в моето програмиране и това за мене е много обезпокоително, защото тази задача е посочена като изпитна задача. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Birthdey { class Program { static void Main(string[] args) { double L = double.Parse(Console.ReadLine()); double W = double.Parse(Console.ReadLine()); double H = double.Parse(Console.ReadLine()); double P = double.Parse(Console.ReadLine()); double V = L * W * H * (1 - P) * 0.001; double water = Math.Round(V, 3); Console.WriteLine(water); } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Birthdey { class Program { static void Main(string[] args) { double L = double.Parse(Console.ReadLine()); double W = double.Parse(Console.ReadLine()); double H = double.Parse(Console.ReadLine()); double P = double.Parse(Console.ReadLine()); double V = L * W * H * (1 - P) * 0.001; double water = Math.Round(V, 3); Console.WriteLine(water); } } }
0
Programming Basics
gtsonkov avatar gtsonkov 59 Точки
Best Answer

Промети израза за пресмятане на double V = L * W * H * ((1-(P * 0.001))); защото в твоя случай първо изваждаш от 1 даденият процен и получаваш отрицателно число от където програмата ти връща грешен отговор (спрямо условието). 

1
kvita avatar kvita 0 Точки

Благодаря.

Аз това го правех предварително и не съм залагал 1 - 17%, а 1 - 0.17,  Благодаря, защото аз проверих многократно решението стъпка по стъпка и всичко работи във Visual Studio, a в Judge  не щеше и не ми беше ясно как това е възможно при такава елементарна задача компилатора на  Visual Studio а този на Judge да дава други резултати. Сега разбрах за мен променливта Р е 0.17 и така я въвеждам, докато за Judge e 17. 

 

Поздрави

0
kvita avatar kvita 0 Точки

Благодаря. Просто при мен бях приел, че Р = 0.17.

0
Martin000 avatar Martin000 115 Точки

Здравей, щом пращаш код и очакваш помощ е редно да дадеш:

  1. Линк към задачата в Judge
  2. Условие на задачата

 

0
kvita avatar kvita 0 Точки

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

Изпращам връзка към моето решение: https://pastebin.com/hU7PcxTp. Задачата можеш да намериш на https://softuni.bg/trainings/resources/officedocument/34446/lab-problem-descriptions-programming-basics-with-csharp-september-2018/2073. 

За мен е притеснително, че задачата е посочена като изпитна задача, а тя е обидно елементарна. Програмата, която съм написал съм я изпълнявал стъпка по стъпка на части и съм извежадал всички междинни операции на екрана. За мен е необяснимо и много обезпокоително, че Visual Studio и компилаторът изпълняват всичко и изкарват верни резултати, а Judge изкарва други резултати в детайлс без да посочва някакви други грешки. 

Поздрави

0
StelaChilikova avatar StelaChilikova 19 Точки

Здравей

така написано не се рабира нищо :)

напиши го в https://pastebin.com

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

ето моето решение https://pastebin.com/zEM2EGpD

 

1
09/09/2018 12:36:48
kvita avatar kvita 0 Точки

Благодаря. 

Погледнах решението ти. 

Тук ти изпращам моето: https://pastebin.com/hU7PcxTp. Пусни програмата във Visual Studio и тя щр работи.

Аз съм я изпълнявал и стъпка по стъпка и съм изкарвал всяко междинно решение на екрана и те са верни и затова съм обезпокоен, защото не може всички кодове да са синтактично правилни и компилатораа на Visual Studio да ги възприема и изпълнява, а Judge да дава грешки. При това в детайли посочва само разлика в резултатите, а не някаква друга причина. Не би трябвало такава програма да вади други резултати.  

Благодаря за съдействието. Довечера на упражненията ще питам. Трябва да получа отговор.

0
Martin000 avatar Martin000 115 Точки

И те съветвам да даваш по смислени имена на променливи, за да знаеш ти и дриги хора, които ти четат кода кое какво е.

0
kvita avatar kvita 0 Точки

Отвори какъвто и да технически проспект и ще видиш, че височина, дължина и широчина се означават с В х Д х Ш и аъответно с height length width и H x L x W и точно такива "смислени имена" съм задал за моите променливи.Така, че това е ясно. Освен това, откровенно казано, за такава елементарна задача не съм предполагал, че ще се налага да я коментирам, а още по малко съм предполагал, че в една задача със 6 числа за умножаване (в елемантарната математика множител 1 до множител 6) някой ще търси някакъв дълбок смисъл в наименованието на отделните множители. Забележката щеше да има повече смисъл, ако искаше да знаеш за какво е задачата и какъв е кодът. Не знаех,  че ще се покаже в такъв вид иначе никога не бих пуснал въпроса така. Във всеки случай в бъдеще ако коментирам нещо тук ще съм по-подготвен

1. Задачата е посочена под номер 11 като изпитна задача на:

https://softuni.bg/trainings/resources/officedocument/34446/lab-problem-descriptions-programming-basics-with-csharp-september-2018/2073

2. Кодът можеш да намериш тук: https://pastebin.com/hU7PcxTp

Лично за мен е много обезпокоително, че в една такава елементарна задача, в която няма никакви условия, а извършване на най-обикновени математически действия може да се получи разлика между резултатите от изпълнението на програмата с компилатора на Visual Studio  и Judge още повече, че Judge посочва само грешки в резултата, защото във Visual Studio програмата работи идеално. Аз съм я изпълнявал стъпка по стъпка и съм извеждал на екрана резултата. Едва след това съм добавял следващото умножение, за да проверя всичко. 

 

0
Martin000 avatar Martin000 115 Точки

Задачата ти се струва елементарна, защо правиш "тема" за нея. Именага на променливите не се разбира какво е означено с тях, защото са с по една буква. ТОЕСТ НЕ ДОБРЕ НАИМЕНОВАНИ ПРОМЕНЛИВИ. Заглаяието на въпроса ти е по-дълго от кода. Погледни в правила за ползването на форума и как се пише заглавие. Щом е толкова елементарно, защо не си откри сам грешката. И да не е никак ОК да питаш за задача без да даваш условие и линк към judge за да мога аз да тествам твоето решение и да видя грешките. Мисля това за нормално.

0
kvita avatar kvita 0 Точки

Приемам забележките и ще се съобразяавам с тях. А задачата наистина е елементарна и я коментирах, защото не можех да намеря сам причината и при мен даваше винаги верните отговори. Разбира се и грешката се оказа елементарна. В условието е зададена променлива P = 17% и аз  в задачата я задавах като 0.17, а Judge я смята като 17. 

0
Martin000 avatar Martin000 115 Точки

Пробвай да форматираш така Console.WriteLine($"{water:f3}"); и махни math round, защото то е закръгляне. Така всичко ще е ок.

0
09/09/2018 13:56:05
kvita avatar kvita 0 Точки

Благодаря.

По условие беше заложено да се използва Math.Round. Иначе грешката е моя при въвеждането на едната променлива, която е зададена като 17%, а аз я въвеждм като 0.17, докато за Judge тя равна на 17.

Поздрави

0
stanislavtz avatar stanislavtz 4 Точки

:) Прочети пак условието, Никъде не е посочено изискване за закръгляне, а се изисква форматиране до определен знак след десетичната запетая - точно там е грешката. Позволявам си да давам категоричен отговор, понеже аз бях направил същата грешка използвайки Math,Round(volume, 3), след като прочетох заданието внимателно го промених на ({0:f3}, volume) и нещата се оправиха. Та с две думи искам да кажа на всички, че явно трябва да си четем много внимателно условията. :) Поздрави на всички :)

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