Loading...

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

xpainkillerx avatar xpainkillerx 14 Точки

08. Metric Converter - проблем с проверките на Judge

Здравейте,

имам проблем със задачата "Конвертор на мерни единици".

Понеже решението с if-else  е доста дълго реших да го направя със Switch-case.

Във VS всичко работи нормално, но Джъдж ми дава само 65 точки и ми показва грешен резултат 

в няколко проверки, Моля ако някой намери грешките да ми ги сподели :) 

Благодаря!

Кодът е на C#

https://pastebin.com/asnGWG3Q

 

Ето и условието на задачата:

Задача: конвертор за мерни единици
Да се напише програма, която преобразува разстояние между следните 8 мерни единици: m, mm, cm, mi, in, km, ft, yd. Използвайте съответствията от таблицата по-долу:

Входна единица                  Изходна единица

1 meter (m)                                1000 millimeters (mm)

1 meter (m)                               100 centimeters (cm)

1 meter (m)                                0.000621371192 miles (mi)

1 meter (m)                                39.3700787 inches (in)

1 meter (m)                               0.001 kilometers (km)

1 meter (m)                               3.2808399 feet (ft)

1 meter (m)                               1.0936133 yards (yd)



Входните данни се състоят от три реда:
• Първи ред: число за преобразуване.
• Втори ред: входна мерна единица.
• Трети ред: изходна мерна единица (за резултата).

Тагове:
0
Programming Basics 06/09/2019 19:46:56
knoteva avatar knoteva 1081 Точки

Здравей,

Едната грешка е, че в switch-a си написал "inch" вместо "in". firstUnit(in,)няма общо с с твоята променлива double inch.

Освен това в switch (firstUnit) при case "m": трябва да имаш result = value / m; Иначе при примерен вход 12/m/cm result ще няма да присвои 12 / 1, а ще остане 1.

https://pastebin.com/FPKGgJaG

0
07/09/2019 14:23:33
xpainkillerx avatar xpainkillerx 14 Точки

Здравей, да права си за " result = value / m;" , благодаря ти.

Проблемът е, че VS не ми позволява да дефинирам променлива : double in = (и т.н.)   - дава ми "in" като ключова дума... не зная защо.

Използвах кода , който ми изпрати като поправих навсякъде да "inch" но judge ми дава 76 т.

Това ми изписва като Ерор при дефиниране на double in = double.Parse(Console.ReadLine());
Error    CS1001    Identifier expected    
Error    CS1003    Syntax error, ',' expected    Exercise\alchocolShop\Program.cs    9    Active
Error    CS1002    ; expected    
Error    CS1525    Invalid expression term '='    
 

0
knoteva avatar knoteva 1081 Точки

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

Да, като декларираш променливата трябва да е inch(или някакво друго име, примерно inches, apples и т.н.).

Само в двата кейса трябва да е in:

case "in"(това е firstUnit. Тя е стринг и се подава от вход.): result = value / inch(това е променливата, която сме дефинирали по-горе); break; Двете неща са различни. Едното в случая е стринг(условието), а другото си е твоята double променлива, с която се извършват някакви действия ако условието е вярно. "in" трябваше да е inch ако в условието беше  39.3700787 inches (inch). Аналогично и за втория switch.

 

 

0
07/09/2019 20:16:13
knoteva avatar knoteva 1081 Точки

Ако напишеш case "inch": result = value / inch; break; никога няма да влезне в този кей, защото judge го дава като "in".

0
xpainkillerx avatar xpainkillerx 14 Точки

Oх, е разбира се... аз съм се забил в тоя inch и съвсем смесвам понятията за вход и за име на променливата....

Благодаря ти много, вече ми е ясна работата. Спокойна вечер и благодарности пак :)

П.С.    Е да,  Judge дава 100 точки на твоя код, ама аз па нещо съм решил, че му куца :)

1
knoteva avatar knoteva 1081 Точки

И аз не успях да го обясня както трябва, но щом все пак ти помогнах е добре :) 

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