Loading...
LoShIaA avatar LoShIaA 0 Точки

Задача: Currency Converter. По-удачен вариант за решение на задачата?

Здравейте, някой може ли да предостави по удачен вариант за решаване нa тази задача? Този, който съм написал нещо не ми допада. Аз съм включил само пет комбинации за вдох и то тези, които изискваше judge. Интересно ми е има ли вариант, в който чрез for обикаляме всички възможни комбинации?

Ето го кода: https://pastebin.com/u0Usdcpq

import java.util.Scanner;

public class CurrencyConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double amount = Double.parseDouble(scanner.nextLine());
        String inputCurrency = scanner.nextLine();
        String outputCurrency = scanner.nextLine();

        double USD = 1.79549;
        double EUR = 1.95583;
        double GBP = 2.53405;

        if (inputCurrency.equals("USD") && outputCurrency.equals("BGN")) {
            amount = amount * USD;
            System.out.printf("%.2f BGN", amount);

        } else if (inputCurrency.equals("BGN") && outputCurrency.equals("EUR")) {
            amount = amount / EUR;
            System.out.printf("%.2f EUR", amount);

        } else if (inputCurrency.equals("EUR") && outputCurrency.equals("GBP")) {
            amount = amount * (EUR / GBP);
            System.out.printf("%.2f GBP", amount);

        } else if (inputCurrency.equals("USD") && outputCurrency.equals("EUR")) {
            amount = amount * (USD / EUR);
            System.out.printf("%.2f EUR", amount);

        } else if (inputCurrency.equals("GBP") && outputCurrency.equals("USD")) {
            amount = amount * (GBP / USD);
            System.out.printf("%.2f USD", amount);
        }
    }
}

 

Тагове:
0
Programming Basics with Java
Evelin.D avatar Evelin.D 29 Точки
Best Answer

Здравей,

Ето и още едно решение :)

import java.util.Scanner;

public class CurrencyConverter {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        double sum = Double.parseDouble(scanner.nextLine());
        String firstCur = scanner.nextLine();
        String secondCur = scanner.nextLine();

        if(firstCur.equals("USD")){
            sum = sum * 1.79549;
        } else if(firstCur.equals("EUR")){
            sum = sum * 1.95583;
        } else if(firstCur.equals("GBP")){
            sum = sum * 2.53405;
        }

        if(secondCur.equals("USD")){
            sum = sum / 1.79549;
        } else if(secondCur.equals("EUR")){
            sum = sum / 1.95583;
        } else if(secondCur.equals("GBP")){
            sum = sum / 2.53405;
        }

        System.out.printf("%.2f %s", sum, secondCur);
    }
}
 

0
jordanivanov147 avatar jordanivanov147 0 Точки

Здравейте,

Ето още едно решение с малко по-мако if - ове. 

 

import java.util.Scanner;

public class CurrencyConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double value = Double.parseDouble(scanner.nextLine());
        String inputCurr = scanner.nextLine();
        String outputCurr = scanner.nextLine();

        double usd = 1.79549;
        double eur = 1.95583;
        double gbp = 2.53405;
        double suma = 0;

        if(inputCurr.equals("BGN")){
            switch (outputCurr) {
                case "USD": suma = value / usd;
                    System.out.printf("%.2f USD",suma);
                    break;
                case "EUR": suma = value / eur;
                    System.out.printf("%.2f EUR",suma);
                    break;
                case "GBP": suma = value / gbp;
                    System.out.printf("%.2f GBP",suma);
                    break;
            }
        }
        if(inputCurr.equals("USD")){
            switch (outputCurr) {
                case "BGN": suma = value / (1 / usd);
                    System.out.printf("%.2f BGN",suma);
                    break;
                case "EUR": suma = (value / (1 / usd)) / eur;
                    System.out.printf("%.2f EUR",suma);
                    break;
                case "GBP": suma = (value / (1 / usd)) / gbp;
                    System.out.printf("%.2f GBP",suma);
                    break;
            }
        }
        if(inputCurr.equals("EUR")){
            switch (outputCurr) {
                case "BGN":
                    suma = value / (1 / eur);
                    System.out.printf("%.2f BGN", suma);
                    break;
                case "USD":
                    suma = (value / (1 / eur)) / usd;
                    System.out.printf("%.2f USD", suma);
                    break;
                case "GBP":
                    suma = (value / (1 / eur)) / gbp;
                    System.out.printf("%.2f GBP", suma);
                    break;
            }
        }
            if(inputCurr.equals("GBP")){
                switch (outputCurr) {
                    case "BGN": suma = value / (1 / gbp);
                        System.out.printf("%.2f BGN",suma);
                        break;
                    case "USD": suma = (value / (1 / gbp)) / usd;
                        System.out.printf("%.2f USD",suma);
                        break;
                    case "EUR": suma = (value / (1 / gbp)) / eur;
                        System.out.printf("%.2f EUR",suma);
                        break;
                }
            }
        }
}
        

0
joroai avatar joroai 17 Точки

още  едно   решение   https://pastebin.com/S8FMEc1R

0
IttyBitty avatar IttyBitty 27 Точки

Здравей, колега! 

Понеже се съобразявам с началните знания, които до сега поне лично аз съм изучила (за пръв път уча програмиране) и не съм взела нито if-else конструкция, нито swich case и т.н., гледам да си подпомагам с библиотеката на MSDN или в случая погледнах от http://www.tutorialsteacher.com/csharp/csharp-dictionary, откъдето разбрах за Dictionary и как да си послужим с него. Създава се нов dictionary, в който въвеждаме типове променливи и техните стойности и ги съхраняваме. В случая различните валути и техния курс, след което ги изписваме на конзолата на 3 отделни реда (в първия въвеждаме число, втория е за 1вата валута, от която преобразуваме във 2рата и съответно самата 2ра валута, в която искаме да видим крайния резултат) и печатим на конзолата, като си подполагаме със F2 да закръгли до втората запетая. Решението ми на задачата дава 100/100 в Judge. 

 

namespace Currency_Converter
{
    class Currency_Converter
    {
        static void Main(string[] args)
        {
            double money = double.Parse(Console.ReadLine()); 
            string firstCurrency = Console.ReadLine();
            string secondCurrency = Console.ReadLine();
            
            Dictionary<string, double> dict = new Dictionary<string, double>()
            { {"BGN", 1} , {"USD", 1.79549} , {"EUR", 1.95583} , {"GBP", 2.53405} };

            double result = money * (dict[firstCurrency] / dict[secondCurrency]);

            Console.WriteLine($"{result:F2} {secondCurrency}");
            
        }
    }
}

 

Още при въвеждането на dictionary, dict може да бъде променено на currencies например или както ти пожелаеш. В случая аз реших да си го оставя dict. laugh

Късмет!

1
13/09/2018 03:58:39 1
LoShIaA avatar LoShIaA 0 Точки

Благодаря на всички за отговорите :).

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