Ускорить написание кода для конвертации множества валют

Рейтинг: 0Ответов: 0Опубликовано: 10.04.2023

я написал программу, которая конвертирует валюту в другую. Если всего 3 валюты, то вариаций 6, а если их несколько десятков, то свыше 1000. Как мне написать программу, которая будет конвертировать валюту в любую другую, но не перебирая вручную каждую валюту, ведь тогда придётся написать свыше 1000 case, а это очень долго.

float rublesInWallet;
float dollarsInWallet;
float euroInWallet;
float rublesToDollar = 81.76F;
float dollarToRuble = 0.012F;
float rublesToEuro = 89.25F;
float euroToRuble = 0.011F;
float euroToDollar = 0.92F;
float dollarsToEuro = 1.09F;
float rublesForOperation;
float dollarsForOperation;
float euroForOperation;
Console.Write("Сколько у вас рублей?");
rublesInWallet = Convert.ToSingle(Console.ReadLine());
Console.Write("Сколько у вас долларов?");
dollarsInWallet = Convert.ToSingle(Console.ReadLine());
Console.Write("Сколько у вас евро?");
euroInWallet = Convert.ToSingle(Console.ReadLine());
Console.Write($"Выберите операцию: 1 - перевести рубли в доллары, 2 - перевести доллары в рубли," +
    $" 3 - перевести рубли в евро, 4 - перевести евро в рубли," +
    $" 5 - перевести доллары в евро, 6 - перевести евро в доллары.");
int operation = Convert.ToInt32(Console.ReadLine());
switch (operation)
{
     case 1:
        Console.Write("Сколько рублей вы хотите перевести в доллары?");
        rublesForOperation = Convert.ToSingle(Console.ReadLine());
        if (rublesForOperation <= rublesInWallet)
        {


            dollarsInWallet = dollarsInWallet + (rublesForOperation / rublesToDollar);
            rublesInWallet = rublesInWallet - rublesForOperation;
        }
        else if (rublesForOperation > rublesInWallet)
        {
            Console.WriteLine("Ошибка! Недостаточно рублей!");
        }
        break;
    case 2:
        Console.Write("Сколько долларов вы хотите перевести в рубли?");
        dollarsForOperation = Convert.ToSingle(Console.ReadLine());
        if (dollarsForOperation <= dollarsInWallet)
        {
        rublesInWallet = rublesInWallet + (dollarsForOperation / dollarToRuble);
        dollarsInWallet = dollarsInWallet - dollarsForOperation;
        }
        else if (dollarsForOperation > dollarsInWallet)
        Console.WriteLine("Ошибка! Недостаточно долларов!");

        break;
    case 3:
        Console.Write("Сколько рублей вы хотите перевести в евро?");
        rublesForOperation = Convert.ToSingle(Console.ReadLine());
        if (rublesForOperation <= rublesInWallet)
        {
            

            euroInWallet = euroInWallet + (rublesForOperation / rublesToEuro);
            rublesInWallet = rublesInWallet - rublesForOperation;
        }
        else if (rublesForOperation > rublesInWallet)

            Console.WriteLine("Ошибка! Недостаточно рублей!");
        break;
        
    case 4:
        Console.Write("Сколько евро вы хотите перевести в рубли?");
        euroForOperation = Convert.ToSingle(Console.ReadLine());
        if (euroForOperation <= euroInWallet)
        {
            

            rublesInWallet = rublesInWallet + (euroForOperation / euroToRuble);
            euroInWallet = euroInWallet - euroForOperation;
        }
        else if (euroForOperation > euroInWallet)
            Console.WriteLine("Ошибка! Недостаточно евро!");
        break;
        case 5:
        Console.Write("Сколько долларов вы хотите перевести в евро?");
        dollarsForOperation = Convert.ToSingle(Console.ReadLine());
        if (dollarsForOperation <= dollarsInWallet)
        {
            

            euroInWallet = euroInWallet + (dollarsForOperation / dollarsToEuro);
            dollarsInWallet = dollarsInWallet - dollarsForOperation;
        }
        else if(dollarsForOperation > dollarsInWallet)
        Console.WriteLine("Ошибка! Недостаточно долларов!");
        break;
    case 6:
        Console.Write("Сколько евро вы хотите перевести в доллары?");
        euroForOperation = Convert.ToSingle(Console.ReadLine());
        if (euroForOperation <= euroInWallet)
        {
            

            dollarsInWallet = dollarsInWallet + (euroForOperation / euroToDollar);
            euroInWallet = euroInWallet - euroForOperation;
        }
        else if (euroForOperation > euroInWallet)
        Console.WriteLine("Ошибка! Недостаточно евро!");
        break;
        default:
        Console.WriteLine("Ошибка! Неизвестная операция!");
        break;
}
Console.WriteLine($"У вас на счету {rublesInWallet} рублей, {dollarsInWallet} долларов, {euroInWallet} евро");

Ответы

Ответов пока нет.