Софтуерно Инженерство
Loading...
+ Нов въпрос
Nikola3132 avatar Nikola3132 6 Точки

Programming Basics with C# -Логически проверки - Конвертор за мерни единици-ПРОБЛЕМ

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

Ето го решението ми  https://pastebin.com/JCNNUZt8

ето го и условието -

Да се напише програма, която преобразува разстояние между следните 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)
Входните данни се състоят от три реда, въведени от потребителя:
⦁    Първи ред: число за преобразуване
⦁    Втори ред: входна мерна единица
⦁    Трети ред: изходна мерна единица (за резултата)
Резултатът да се форматира до осмия знак след десетичната запетая.
Примерен вход и изход:
вход    изход        вход    изход        вход    изход
12
km
ft    39370. 07886932         150 mi in    9503999.99393599         450
yd
km    0.41148000
Тествайте решението си в judge системата: https://judge.softuni.bg/Contests/Practice/Index/152#7

veronikaaa86 avatar veronikaaa86 363 Точки
Best Answer

Здравей Nikola3132,

тъй като задачата е от лекцията Логически проверки, мое мнение е да си я направиш с такава, а не с масиви, Dictonary и друго, което не се учи в бейсик, особено ако не ги разбираш. Все пак целта е да си упражните именно проверките и if - else if конструкциите.

Един съвет, когато имаш няколко мерни едниници както в тази задача (подобно и на последната в Прости пресмятания - Междувалутен калкулатор) - приравни си всички мерни единици към една. В случая, в условието ти е дадена и подсказка  в една таблица - 1 Метър на колко е равно, за всяка мерна единица.

Заповядай едно решение, което смятам, че на този етап на обучението е най-оптималното:

https://pastebin.com/k48zkqHA

Хубав и успешен ден :)

0
Nikola3132 avatar Nikola3132 6 Точки

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

 

 

1
Nikola3132 avatar Nikola3132 6 Точки

Само че не разбрах логиката на това защо  ,,input,,-а се разделя, а ,,output,,-a умножава -

,,Извинявам се ако съм прозвучал дебилно-много начинаещ съм

0
veronikaaa86 avatar veronikaaa86 363 Точки

Няма защо да се извиняваш, не звучиш никак дебилно. Хубаво е че искаш да разбереш логиката :)

 За да намериш например 12 км, колко ft са - Първо изчисляваш 12 км колко метра са = 12 / 0,001 = 12000 метра, след това тези получени метри умножаваме по стойноста за ft, -> 12 000 * 3.2808399, защото 1м = 3.2808399. Получаваме -> 39 370, 07886932

 

0
22/01/2018 15:16:31
TodorovP avatar TodorovP 177 Точки

С логическите проверки ми се струва, че може лесно човек да се обърка. Затова направих друго и кодът е този:

https://pastebin.com/tydBGiBU

който работи. Ако има неясно - питайте.

0
VasilKotsev avatar VasilKotsev 132 Точки

С dictionary е най-хитро според мен, а може и със switch.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            double units_num = double.Parse(Console.ReadLine());
            string current_unit = Console.ReadLine();
            string to_unit = Console.ReadLine();

            Dictionary<string, double>

                units = new Dictionary<string, double>()
                {
                    {"mm", 1000},
                    {"m", 1},
                    {"cm", 100 },
                    {"mi", 0.000621371192},
                    {"in", 39.3700787},
                    {"km", 0.001},
                    {"ft", 3.2808399},
                    {"yd", 1.0936133}

                };

            var conv = (units_num / units[current_unit])* units[to_unit];
            Console.WriteLine("{0:F8} {1}", conv, to_unit);
        }
    }
}

 

0
desislava777 avatar desislava777 159 Точки

Още едно примерно решение https://pastebin.com/fDwi682R дано да е от полза

0
Nikola3132 avatar Nikola3132 6 Точки

мерси!

0
IvoStoichev avatar IvoStoichev 2 Точки

Здравейте хубав и успешен ден

Успехи във всички начинания - Здрави да сте в това студено време

Ето нещо и от мен дано Ви е от полза

Тествано в Judge  wink100/100

https://pastebin.com/1xMzErwv

 

0