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);
        }
    }
}
 

0
Programming Basics
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
borislav9212 avatar borislav9212 745 Точки

"in" е в синъо, значи е linq, class,methods, или нещо такова, не знама точно какво е, търсих в нета но не можах да намеря какво е. Проблема се решава като смениш името на променливата да не е " in ". Каквото искаш може да сложиш , дори и " pesho ". Тук важното е да не променяш case, там трябва да си е "in", защото ако е друго име Judge прави проверка точно за "in" и не го открива и от там ти идват и по-малкото точки. http://pastebin.com/stePQ1dZ

0
26/06/2016 21:04:55
yGaByGa avatar yGaByGa 21 Точки

Здравейте хора , 

Някъде по пътя съм изкривил логиката и ми дава по 30/100 . Едни от резултатите ми излизат с - дртуги вместо 6 ми излиза 5 ... странна работа :(

Може ли да ме насочите малко къде съм оплел нещата или ще е по лесно да напиша на ново ?

По слециално бонус точките в принтирането съм оплел много :(

 

using System;

namespace _06.BonusPoint
{
    class BonustPoint
    {
        static void Main(string[] args)
        {
            Console.Write("Enter score: ");
            double number = double.Parse(Console.ReadLine());
            double result = number;
            double bonus = 0;

            if (number >= 1000)
            {
                result = result + result * 10 / 100;
            }
            else if (number >= 100)
            {
                result = result + result * 20 / 100;
            }
            else
            {
                result += 5;
            }

            if (number % 2 == 0)
            {
                bonus = result++;
            }
            else if (number % 5 == 0)
            {
                bonus = result += 2;
            }
            Console.WriteLine("Bonus score: " + (bonus - number));
            Console.WriteLine("Total score: " + result);
        }
    }
}
 

0
DimitarKarev avatar DimitarKarev 87 Точки

промяната на bonus = result++; към  bonus = result +=1; оправя донякъде нещата и получаваш 70/100 точки но има още няколко неща който трябва да се оправят. Ето моето решение:

var number = double.Parse(Console.ReadLine());
            var bonus = 0.0;
            if (number <= 100)
            {
                bonus += 5;
            }
            else if (number > 1000)
            {
                bonus += (number * 0.1);               
            }
            else 
            {
                bonus += (number * 0.2); 
            }
            if (number % 2 == 0)
            {
                bonus += 1;
            }
            else if (number % 10 == 5)
            {
                bonus += 2;
            }
            Console.WriteLine(bonus);
            Console.WriteLine(bonus + number);

0
AntonBogdanov92 avatar AntonBogdanov92 6 Точки

При мен гърми на 3,4 теста: http://pastebin.com/mkhcwmhY  -> получавам 60/100.. Вече зациклих,предполагам грешката е елементарна,но.. :/ Ще се радвам някой да помогне ;)

0
27/06/2016 00:22:44
borislav9212 avatar borislav9212 745 Точки

yGaByGa имаш няколко грешки. Така както си написал кода number влиза и в двата if , трябва да ги ограничиш -> if (number > 100 && number <=1000). Като е double, трябва да е 0.0. Трябва да намериш totalscore. Ето ти кода редактиран, прегледай го и ще го разбереш -> http://pastebin.com/TiMftUzw

0
26/06/2016 22:45:12
Radoslav98 avatar Radoslav98 0 Точки

Моето решение

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

namespace MetricConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            double num = double.Parse(Console.ReadLine());
            string metric = Console.ReadLine();
            string metric1 = Console.ReadLine();
            var currencies = new Dictionary<string, double>()
            {
                {"m" , 1},
                {"mm", 1000 },
                {"cm", 100 },
                {"mi", 0.000621371192},
                {"in", 39.3700787},
                {"km", 0.001},
                {"ft", 3.2808399},
                {"yd", 1.0936133}
            };
            double result = num / currencies[metric] * currencies[metric1];

            Console.WriteLine("{0} {1}", result,  metric1);
        }
    }
}
 

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