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)
Входните данни се състоят от три реда:
• Първи ред: число за преобразуване.
• Втори ред: входна мерна единица.
• Трети ред: изходна мерна единица (за резултата).
Здравей, да права си за " 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 '='
Не знам какво точно си променил, но нищо не трябва да се променя по кода, който ти пратих. :)
Да, като декларираш променливата трябва да е inch(или някакво друго име, примерно inches, apples и т.н.).
Само в двата кейса трябва да е in:
case "in"(това е firstUnit. Тя е стринг и се подава от вход.): result = value / inch(това е променливата, която сме дефинирали по-горе); break; Двете неща са различни. Едното в случая е стринг(условието), а другото си е твоята double променлива, с която се извършват някакви действия ако условието е вярно. "in" трябваше да е inch ако в условието беше 39.3700787 inches (inch). Аналогично и за втория switch.
Ако напишеш case "inch": result = value / inch; break; никога няма да влезне в този кей, защото judge го дава като "in".
Oх, е разбира се... аз съм се забил в тоя inch и съвсем смесвам понятията за вход и за име на променливата....
Благодаря ти много, вече ми е ясна работата. Спокойна вечер и благодарности пак :)
П.С. Е да, Judge дава 100 точки на твоя код, ама аз па нещо съм решил, че му куца :)
И аз не успях да го обясня както трябва, но щом все пак ти помогнах е добре :)