Софтуерно Инженерство
Loading...
yGaByGa avatar yGaByGa 21 Точки

Основи на програмирането (Домашно 25.06.2016) Проблеми

Здравейте ,

Имам нужда от малко помощ и акъл :)

Реших си задачата за конвертора на мерни единици но имам малък проблем и не разбирам защо се получава така . Когато дифинирам var in = 39.3700787; in  ми го подчертава като грешка и не ми бачка програмата . Преименувах го на inch и всичко заспа и върви , но judge системата реши че трябва да ми е гадно и тя подава мерна едимица in . За това тя ми режи 18 точки . Някои може ли да сподели защо ми го дава като грешка или какво трябва да допиша за да дефенирам че това е променлива ?

 

using System;

namespace _08.Convert
{
    class Program
    {
        static void Main(string[] args)
        {
            var value = double.Parse(Console.ReadLine());
            var input = Console.ReadLine();
            // Enter m , mm , cm , mi , inch , km , ft , yd 
            var output = Console.ReadLine();
            // Enter m , mm , cm , mi , inch , km , ft , yd

            var meter = 1;
            var mm = 1000;
            var cm = 100;
            var mi = 0.000621371192;
            var inch = 39.3700787;
            var km = 0.001;
            var ft = 3.2808399;
            var yd = 1.0936133;

            switch (input)
            {
                case "m":
                    break;
                case "mm":
                    value = value / mm;
                    break;
                case "cm":
                    value = value / cm;
                    break;
                case "mi":
                    value = value / mi;
                    break;
                case "inch":
                    value = value / inch;
                    break;
                case "km":
                    value = value / km;
                    break;
                case "ft":
                    value = value / ft;
                    break;
                case "yd":
                    value = value / yd;
                    break;
                default:
                    break;
            }
            switch (output)
            {
                case "m":
                    break;
                case "mm":
                    value = value * mm;
                    break;
                case "cm":
                    value = value * cm;
                    break;
                case "mi":
                    value = value * mi;
                    break;
                case "inch":
                    value = value * inch;
                    break;
                case "km":
                    value = value * km;
                    break;
                case "ft":
                    value = value * ft;
                    break;
                case "yd":
                    value = value * yd;
                    break;
                default:
                    break;
                
            }
            Console.WriteLine(value + " " + output);
        }
    }
}
 

aastefanov avatar aastefanov 5 Точки

При променлива с име in, кодът ти се чупи, защото е запазена дума.

Нямаш никакъв проблем да оставиш променливата inch, но все пак да използваш case "in".

0
yGaByGa avatar yGaByGa 21 Точки

Здравей ,

Тоест когато използвам in , трябва да го слагам в двойни кавички "in" ? Така ли се прави ?

Може ли да споделиш как е правилно да се запише ?

0
aastefanov avatar aastefanov 5 Точки

Оставяш променливата като var inch, а в switch конструкцията пишеш нещо от рода на:

case "in":
    value = value / inch;

 

0
yGaByGa avatar yGaByGa 21 Точки

Благодаря много , получи се 100/100 :) 

0
Tanina80 avatar Tanina80 11 Точки

Важното е да напишеш case "in" за да знае, че при въведени символи - in - от клавиатурата трябва да извърши примерно value = value / inch. Т.е. грешиш в горните редове на тези които си болд-нал. А декларирането на всички тези "променливи", които не се променят, а са си направо константи, на мен лично ми се струва малко излишно в случая, и е все тая там дали даваш име на константата inch, inc, inh ..

0
Plamen27 avatar Plamen27 599 Точки

Ако искаш може и да използваш служебното име за in за променливата ето така:

        var @in = 39.3700787;

0