Ускорить написание кода для конвертации множества валют
я написал программу, которая конвертирует валюту в другую. Если всего 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} евро");
Источник: Stack Overflow на русском