Loading...
laziana86 avatar laziana86 4 Точки

Проблем с 8. Конвертор за мерни единици

Здравейте,

Имате ли представа какво се чупи в кода? Пробвах различни закръгления (по начина, който съм оставил сега, както и диретно с Console.WriteLine($"{distance:f8}");

и така и не изкарва коректните стойности.

https://pastebin.com/uGZ8sztD

Благодаря предварително!

 

0
Programming Basics
veronikaaa86 avatar veronikaaa86 365 Точки

Първо делиш и после умножаваш :)

0
laziana86 avatar laziana86 4 Точки

Виж константите, които съм вкарал. Първото действие е вкарано още в тях.

Когато проверявам с примерните данни: 

1) Вход - 12 km ft - вместо 39370. 07886932 ми изкарва 39370.07880000

2) Вход - 150 mi in - тук изкарва верния резултат 9503999.99393599

3) Вход 450 yd km - вместо 0.41148000 ми изкарва 1.47637796

Май нещо съм разбъзикал коефициентите.

0
veronikaaa86 avatar veronikaaa86 365 Точки

Разгледах ги и според мен са объркани, но защо си усложняваш живота с тях, след като имаш едни готови цифри в условите на задачата :)

0
TodorovP avatar TodorovP 177 Точки

Твоят код изчислява само от изброените единици в метри и обратно - от метри в някоя от изброените единици. Трябва да се изчислява и от инчове в ярди например.

0
veronikaaa86 avatar veronikaaa86 365 Точки

Логиката на кода е да приравни всички мерни единици в метри чрез деление и после от метри в конкретната мерна единица чрез умножение :)

1
laziana86 avatar laziana86 4 Точки

Не е точно така. Първият if-else if цикъл проверява каква е входната величнина (метри, мм, см,...) и обръща въведената стойност distance в метри, а втория цикъл проверява каква е изходната величина (метри, мм, см,...) и обръща вече преизчислената стойност на distance в търсената величина. 

1
veronikaaa86 avatar veronikaaa86 365 Точки

Именно, първо обръща в метри входната мерна единица, а после от получените метри в изходната входна единица. Това съм казала и аз :) Приравнява се към една мерна единица, в случая е метри :)

0
veronikaaa86 avatar veronikaaa86 365 Точки

Стойностите си въведи както ти е в документа. Ето поправеното решение:

https://pastebin.com/aVivpXGg

0
laziana86 avatar laziana86 4 Точки

Благодаря. Явно нещо съм се омотал в самите коефициенти, сега наиситна изкарва верните стойности.

0
TodorovP avatar TodorovP 177 Точки

Предлагам на твоето внимание мое решение https://pastebin.com/SdeNKhCW

където става компактно с масиви от стрингове и числа.

0
iliyangeorgiev avatar iliyangeorgiev 5 Точки

Здравейте колеги и колежки, може ли някой да ми обясни къде е грешката в моя код, за да му хвана логиката по-добре и къде точно съм тъп? Пробвах и със switch, но и там се получи подобно мазало.

https://pastebin.com/3dR6nKe4

Благодаря предварително! =]

0
svilendotorg avatar svilendotorg 2 Точки

Ето и моят начин, по който го направих:

            // INPUT
            double dist = double.Parse(Console.ReadLine());
            string inType = Console.ReadLine();
            string outType = Console.ReadLine();

            // DEFINITIONS
            double a = 0;
            double b = 0;

            if (inType == "m") a = 1;
            if (inType == "mm") a = 1000;
            if (inType == "cm") a = 100;
            if (inType == "mi") a = 0.000621371192;
            if (inType == "in") a = 39.3700787;
            if (inType == "km") a = 0.001;
            if (inType == "ft") a = 3.2808399;
            if (inType == "yd") a = 1.0936133;

            if (outType == "m") b = 1;
            if (outType == "mm") b = 1000;
            if (outType == "cm") b = 100;
            if (outType == "mi") b = 0.000621371192;
            if (outType == "in") b = 39.3700787;
            if (outType == "km") b = 0.001;
            if (outType == "ft") b = 3.2808399;
            if (outType == "yd") b = 1.0936133;

            // OUTPUT
            double result = dist/a*b;
            Console.WriteLine($"{result:F3}");
 

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