Loading...
PetarJekov97 avatar PetarJekov97 7 Точки

[Homework] Currency Converter help

Ако някой може да подаде ръка на начинаещ онлайн колега , би било много хубаво . Имам нужда от помощ в задачата за конвертиране на валути . Кои команди да ползвам , за направата на самият код ? Може би var или  Dictionary<string, double> factors = new Dictionary<string, double>(); factors.Add("GBP", 0); factors.Add("USD", 0); ? Или други ? Моля помогнете . 

Поздрави !

Тагове:
1
Programming Basics 24/01/2016 12:17:15
stanislav.kirov avatar stanislav.kirov 1 Точки

Това е моето решение, работи 100/100, но все пак ще се радвам ако някой помогне за опростяването му.

 

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

namespace Currency_Converter
{
    class Program
    {
        static void Main(string[] args)
        {
            double sum = double.Parse(Console.ReadLine());
            var valutaVhod = Console.ReadLine();
            var valutaIzhod = Console.ReadLine();
            double valUSD = 1.79549;
            double valEUR = 1.95583;
            double valGBP = 2.53405;
            double valBGN = 1;
            var valutaUSD = "USD";
            var valutaEUR = "EUR";
            var valutaGBP = "GBP";
            var valutaBGN = "BGN";
            double promenliva1 = 1;
            double promenliva2 = 2;
            string promenliva3 = null;

            if (valutaVhod == valutaUSD) { promenliva1 = valUSD; }
            if (valutaVhod == valutaEUR) { promenliva1 = valEUR; }
            if (valutaVhod == valutaGBP) { promenliva1 = valGBP; }
            if (valutaVhod == valutaBGN) { promenliva1 = valBGN; }

            if (valutaIzhod == valutaUSD) { promenliva2 = valUSD; }
            if (valutaIzhod == valutaEUR) { promenliva2 = valEUR; }
            if (valutaIzhod == valutaGBP) { promenliva2 = valGBP; }
            if (valutaIzhod == valutaBGN) { promenliva2 = valBGN; }

            if (valutaIzhod == valutaUSD) { promenliva3 = valutaUSD; }
            if (valutaIzhod == valutaEUR) { promenliva3 = valutaEUR; }
            if (valutaIzhod == valutaGBP) { promenliva3 = valutaGBP; }
            if (valutaIzhod == valutaBGN) { promenliva3 = valutaBGN; }

            var result = sum * promenliva1 / promenliva2;
            Console.WriteLine(Math.Round(result,2) + " " + promenliva3);

        }
    }
}

0
MiroX avatar MiroX 0 Точки

Здравейте,

Това е моят код, с който в "Judge" ми дава 100/100 точки :)

using System; 
namespace MultiCurrencyConverter
{
    class MultiCurrencyConverter
    {
        static void Main()
        {
            var a = double.Parse(Console.ReadLine());
            var b = Console.ReadLine();
            var c = Console.ReadLine();
            if (b == "BGN" && c == "USD") Console.WriteLine(Math.Round((a / 1.79549), 2) + " USD");
            if (b == "BGN" && c == "EUR") Console.WriteLine(Math.Round((a / 1.95583), 2) + " EUR");
            if (b == "BGN" && c == "GBP") Console.WriteLine(Math.Round((a / 2.53405), 2) + " GBP");
            if (b == "USD" && c == "BGN") Console.WriteLine(Math.Round((a * 1.79549), 2) + " BGN");
            if (b == "USD" && c == "EUR") Console.WriteLine(Math.Round(((a * 1.79549) / 1.95583), 2) + " EUR");
            if (b == "USD" && c == "GBP") Console.WriteLine(Math.Round(((a * 1.79549) / 2.53405), 2) + " GBP");
            if (b == "EUR" && c == "USD") Console.WriteLine(Math.Round(((a * 1.95583) / 1.79549), 2) + " USD");
            if (b == "EUR" && c == "BGN") Console.WriteLine(Math.Round((a * 1.95583), 2) + " BGN");
            if (b == "EUR" && c == "GBP") Console.WriteLine(Math.Round(((a * 1.95583) / 2.53405), 2) + " GBP");
            if (b == "GBP" && c == "USD") Console.WriteLine(Math.Round(((a * 2.53405) / 1.79549), 2) + " USD");
            if (b == "GBP" && c == "EUR") Console.WriteLine(Math.Round(((a * 2.53405) / 1.95583), 2) + " EUR");
            if (b == "GBP" && c == "BGN") Console.WriteLine(Math.Round((a * 2.53405), 2) + " BGN");
        }
    }
}
0
DimitarKarev avatar DimitarKarev 87 Точки

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

            var value = double.Parse(Console.ReadLine());
            var input = Console.ReadLine().ToUpper();
            var output = Console.ReadLine().ToUpper();
                     if (input == "USD") value *= 1.79549;
            else if (input == "EUR" ) value *= 1.95583;
            else if (input == "GBP" ) value *= 2.53405;
            else if (input == "BGN" ) value *= 1;

                     if (output == "USD") value /= 1.79549;
            else if (output == "EUR") value /= 1.95583;
            else if (output == "GBP") value /= 2.53405;
            else if (output == "BGN") value /= 1;
           
            Console.WriteLine(Math.Round(value, 2) + " " + output);

0
Iliev88 avatar Iliev88 39 Точки

Това е моето решение. По-скоро излгежда "ламерско", но като за начинаещ съм доволен. Без да сме взимали if и else if и това което разбрах сам за тях мисля, че се получи горе-долу.

http://pastebin.com/NJNPe0Zi

0
Leprikona avatar Leprikona 108 Точки

Използваш грешен тип променлива. За пресмятания с валути се използва променливата decimal, а не double.

0
shady_obeyd avatar shady_obeyd 50 Точки

Здравейте, 

Аз реших задачата по възможно най-простия (но дълъг) начин - изцяло чрез if конструкции. Judge-а ми даде 100 от 100. Сигурен съм, че има и по-прости решения, но това измислих. Ето и решението:

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

namespace SimpleCalculations
{
    class Program
    {
        static void Main(string[] args)
        {
            decimal currencyValue = decimal.Parse(Console.ReadLine());
            string currencyInput = Console.ReadLine();
            string currencyOutput = Console.ReadLine();
            if (currencyInput == "USD")
            {
                if (currencyOutput == "BGN")
                {
                    Console.WriteLine(Math.Round(currencyValue * 1.79549M, 2));
                }
                if (currencyOutput == "EUR")
                {
                    Console.WriteLine(Math.Round(currencyValue / 1.0893015277M, 2));
                }
                if (currencyOutput == "GBP")
                {
                    Console.WriteLine(Math.Round(currencyValue / 1.4113417507M, 2));
                }
            }
            if (currencyInput == "BGN")
            {
                if (currencyOutput == "USD")
                {
                    Console.WriteLine(Math.Round(currencyValue / 1.79549M, 2));
                }
                if (currencyOutput == "EUR")
                {
                    Console.WriteLine(Math.Round(currencyValue / 1.955837M, 2));
                }
                if (currencyOutput == "GBP")
                {
                    Console.WriteLine(Math.Round(currencyValue / 2.53405M, 2));
                }
            }
            if (currencyInput == "EUR")
            {
                if (currencyOutput == "BGN")
                {
                    Console.WriteLine(Math.Round(currencyValue * 1.955837M, 2));
                }
                if (currencyOutput == "USD")
                {
                    Console.WriteLine(Math.Round(currencyValue * 1.0893015277M, 2));
                }
                if (currencyOutput == "GBP")
                {
                    Console.WriteLine(Math.Round(currencyValue / 1.2956391915M, 2));
                }
            }
            if (currencyInput == "GBP")
            {
                if (currencyOutput == "BGN")
                {
                    Console.WriteLine(Math.Round(currencyValue * 2.53405M, 2));
                }
                if (currencyOutput == "USD")
                {
                    Console.WriteLine(Math.Round(currencyValue * 1.4113346763M, 2));
                }
                if (currencyOutput == "GBP")
                {
                    Console.WriteLine(Math.Round(currencyValue * 1.2956391915M, 2));
                }
            }
        }
    }
}

0
g_todorov avatar g_todorov 106 Точки

Здравей PetarJekov97,

аз също съм начианещ онлайн колега и ти пращам моето решение с обяснение. Докато четеш обяснението наблюдавай едновременно и кода от pastebin. 

1.Слагаш си една променлива, var amount =double.Parse която да ти изчита и пази стойността на 1-ви ред от конзолата.

2.Слагаш 2 последователни променливи в случая currency1 и currency2, които да ти пазят стринговете, които ще ти изчетат от конзолата (BGN, USD, EUR, GBP )  

3.Слагаш си помощни променливи val1 и val2 с първоначални стойности double, защото по-късно ще съхраняваш в тях double стойности 

4.Пускаш си switch конструкция, която ти проверява променливата currency1  и ако срещне стринг "BGN" присвоява стойност на променливата val1=1 ...така проверява до долу  и като срещне съвпадение презаписва val1 и спира(излиза) от switch case конструкцията. Идентична е ситуацията при следващата switch case конструкция.

5.Следва пресмятане и изпечатване на резултата със закръгляне до 2-рия знак.

Успех.

http://pastebin.com/5r7LNbju

 

0
MLDimitrov avatar MLDimitrov 9 Точки

Странно е ,че приема  if - else конструкция за вярна като се предполага ,че до момента все още не сме учили за нея в курса. Тоест защо се очаква да ползваме нещо което не би трябвало да знаем ? Реално се принудих просто да копирам кода и да го кача  в judge , за да взема точките тъй като това нещо не е обяснено как да го ползваме.

0
sevgin0954 avatar sevgin0954 557 Точки

Една от работата на програмиста е да търси в интернет...не чакай всичко да ти го налеят в главата за да го ползваш​smiley.За 10 мин щеше да разбереш как работи if else с търсене в гооглето вместо да копираш решението наготово.

0
MLDimitrov avatar MLDimitrov 9 Точки

За късмет if-else го знам още от преди да започне курса. И реално мога да направя конвертора така , но мисълта ми беше , че това е курс за total begginers. Лекцията за if-else e след няколко седмици , а се изисква още от сега да ползваме условната конструцкия :) Копирах го защото не е коректно в курс който е за да ти предаде основни знания , да трябва да си ги знаеш тези знания предварително. Логигата я няма. 

-1
sevgin0954 avatar sevgin0954 557 Точки

Затова е със звезда и не е задължителна.......

0
30/05/2017 11:29:39
trepacha123 avatar trepacha123 47 Точки

Ето и моето решение със switch, което мисля, че пести много време и нерви. :)
https://pastebin.com/yFXFvp5V

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