Решение на домашно 8 Конвертор за мерни единици
Това е началото на моето решение на задачата, но не е работещо. Може ли някой да ми даде някакви насоки къде бъркам и въобще дали съм на прав път? http://pastebin.com/c7G9MdFw
Това е началото на моето решение на задачата, но не е работещо. Може ли някой да ми даде някакви насоки къде бъркам и въобще дали съм на прав път? http://pastebin.com/c7G9MdFw
Здрасти,
Тази задача има доста проверки в Judge-а, не са само метър към друга мерна единица. Има проверки и между мерни единици различни от метър, т.е. ще се наложи да се опишат всички комбинации. Доколкото разбирам идеята е да се упражни if-else-if-else, така че аз така съм я написал, но 100% има по-добър начин с други команди :).
Друго нещо, на което искам да обърна внимание е изхода, има тест миля към милиметър и отговора е със 7 знака след десетичната запея, не знам как е в c#, но в Java има възможност да му зададеш до колко цифри след нея да изписва, проблема тук е, че ако отговора е зададен с по-малко ще даде число с "E"-та (1.0460736003995499E7) и Judge-а ще ти даде грешен отговор :(.
Успех!
Извинявам се, лека поправка за цифрите след десетичната запея. Не по-малко, а повече, т.е. трябва да го ограничиш до 7 знака, примерно.
Благодаря за идеите!
Здравей, като допълнение може да разгледаш в интернет и за метода Dictionary. С него нещата стават много по-лесно. Но тук идеята е да се използва може би или " If" или " switch-case".
Успех!
Здравейте, да попитам и аз за същата задачка, значи реших да си преобразувам входящата в метри и после според това, което се търси от потребител да преубразувам в тая мерна единица която търси...написах си го гледам си го викам си тука 100 от 100...ама не 0 от 100...проверих вход - изход бе нещо числото същото ма почва с 0.000 ето и какво съм написала
double number = double.Parse(Console.ReadLine());
string inUnit = (Console.ReadLine());
string outUnit = (Console.ReadLine());
double resultMeter = 0;
if (inUnit == "m")
{
resultMeter = number;
}
else if (inUnit == "mm")
{
resultMeter = number * 1000;
}
else if (inUnit == "cm")
{
resultMeter = number * 100;
}
else if (inUnit == "mi")
{
resultMeter = number * 0.000621371192;
}
else if (inUnit == "in")
{
resultMeter = number * 39.3700787;
}
else if (inUnit == "km")
{
resultMeter = number * 0.001;
}
else if (inUnit == "ft")
{
resultMeter = number * 3.2808399;
}
else if (inUnit == "yd")
{
resultMeter = number * 1.0936133;
}
double resultoutUnit = 0;
if (outUnit == "m")
{
resultoutUnit = resultMeter;
}
else if (outUnit == "mm")
{
resultoutUnit = resultMeter / 1000;
}
else if (outUnit == "cm")
{
resultoutUnit = resultMeter / 100;
}
else if (outUnit == "mi")
{
resultoutUnit = resultMeter / 0.000621371192;
}
else if (outUnit == "in")
{
resultoutUnit = resultMeter / 39.3700787;
}
else if (outUnit == "km")
{
resultoutUnit = resultMeter / 0.001;
}
else if (outUnit == "ft")
{
resultoutUnit = resultMeter / 3.2808399;
}
else if (outUnit == "yd")
{
resultoutUnit = resultMeter / 1.0936133;
}
Console.WriteLine("{0:F8}", resultoutUnit);
}
}
}
Здравей,
Логиката ти е вярна, но обърната :) за най-лесно може да обърнеш inUnit и outUnit и ще стане. Не съм го тествал в djudge, но изпробвах с няколко мерни единици и изглежда работи.
Много ти благодаря за помоща...стана :)