Loading...

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

tuxxy avatar tuxxy 3 Точки

PB C# - Conditional Statements - 04. Metric Converter

Привет,

Другата седмица ще взимаме if-ове, но аз като един примерен ученик се опитвам да вървя малко по напред с материала и си решавам задачите предварително както мога и после гледам да попивам още от материала, Курсът го изгледах целия още преди да съм го започнал принципно. За тази задача написах един код, но като видях какво решение е дадено се хванах за главата (това ми е второто плясване по челото за дължина на кода) колко съм си усложнил живота. Та... Просто имам едно флуудене във форума с въпрос: Дайте ми някакво трето мнение по въпроса къде ми куца нещо (освен може би математиката) и къде да наблегна повече та да не си правя толкова сложна иначе кратката задача. Или пък да си карам курса и да не ми дреме, че пиша 60 реда вместо 10 - то апетита идва с яденото :)

Условието (04 задача) - https://softuni.bg/downloads/svn/programming-basics-v4/course-content/course-resources/CSharp/03.PB-CSharp-Conditional-Statements/03.3%20PB-CSharp-Conditional-Statements-Exercise.docx

Да се напише програма, която преобразува разстояние между следните 3 мерни единици: mm, cm, m. Използвайте съответствията от таблицата по-долу:
входна единица    изходна единица
1 meter (m)    1000 millimeters (mm)
1 meter (m)    100 centimeters (cm)

Решението ми - https://pastebin.com/eLvzAmcB

П.П. Благодаря Ви СофтУни. Запалихте един човек, който първо е хванал отвертката да седне пред монитора.

Тагове:
0
Programming Basics
Iv_Konov avatar Iv_Konov 383 Точки

Здравей, tuxxy,

 

Да, и според мен най-оптималното решение е по предложението на  svetoslav_0. Аз бих добавил и кратък пример със switch, който за еднообразни променливи ми се струва най-удобен за четене и разбиране. Има и още един детайл - когато условието на задачата се основава на метри (т.е. дадено е 1м на какво се равнява), то най-удобно е да ползваме метрите за междинно превръщане (не се налага да смятаме ръчно). Добавил съм за яснота и инчове от себи се,  за да се покаже, че всяка нова мярка води до два нови реда в кода... 

Разбира се, не трябва да се забравя и превръщането на метър в метър  (не се знае как е настроен Съдията и дали търси такъв вход /изход) - ние и на ум го смятаме, но Съдията преценява... :)  Това го пиша предвид решението на Krassi_Daskalova - там не виждам превръщане на m/m, mm/mm и cm/cm, дори и да минава през Съдията 100/100, не ми се струва съвсем коректно...

 

==================================

1 meter (m)    1000 millimeters (mm)
1 meter (m)    100 centimeters (cm)
1 meter (m)    39.37 inches (inch)

==================================

            double sumToConvert = double.Parse(Console.ReadLine());
            string inputMeasure = Console.ReadLine();
            string outputMeasure = Console.ReadLine();

            //пример: на колко инча са равни 2мм? - (2мм / 1000) * 39.37

            switch (inputMeasure) // тук превръщаме всичко към метри
            {
                case "m": sumToConvert /= 1; break;
                case "mm": sumToConvert /= 1000; break;
                case "cm": sumToConvert /= 100; break;
                case "inch": sumToConvert /= 39.37; break;
                default:
                    break;
            }

            switch (outputMeasure) // а тук получените метри ги превръщаме към търсената мярка
            {
                case "m": sumToConvert *= 1; break;
                case "mm": sumToConvert *= 1000; break;
                case "cm": sumToConvert *= 100; break;
                case "inch": sumToConvert *= 39.37; break;
                default:
                    break;
            }

            Console.WriteLine($"{sumToConvert:f3}");

=======================================

 

Поздрави,

Иван

0
tuxxy avatar tuxxy 3 Точки

Изясниха ми се неща и изникнаха други въпроси с които почвам да се мъча след малко. Благодаря на всички Ви за отговорите.

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