Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace ConsoleApp1;
- using System.Text;
- public class Task12
- {
- private const float UsdToRub = 70f;
- private const float RubToUsd = 1f / 67f;
- private const float EurToRub = 80f;
- private const float RubToEur = 1f / 77f;
- private const float UsdToEur = 0.9f;
- private const float EurToUsd = 1.1f;
- public enum CurrencyType
- {
- Rub,
- Usd,
- Eur
- }
- public void Run()
- {
- Console.InputEncoding = Encoding.Unicode;
- Console.OutputEncoding = Encoding.Unicode;
- Console.WriteLine( "Input currency start type: " );
- string[] currencyNames = Enum.GetNames( typeof(CurrencyType) );
- CurrencyType[] currencyTypes = Enum.GetValues<CurrencyType>();
- int indexOffset = 1;
- WriteCurrencyList();
- int currentCurrencyTypeIndex = int.Parse( Console.ReadLine() ) - indexOffset;
- CurrencyType currentCurrencyType = (CurrencyType)currentCurrencyTypeIndex;
- Console.Write("Input currency start value: ");
- float currentCurrencyValue = float.Parse( Console.ReadLine() );
- var currencyWallets = new Dictionary<CurrencyType, float>();
- var currencyRates = new Dictionary<(CurrencyType, CurrencyType), float>()
- {
- { (CurrencyType.Rub, CurrencyType.Usd), RubToUsd },
- { (CurrencyType.Usd, CurrencyType.Rub), UsdToRub },
- { (CurrencyType.Rub, CurrencyType.Eur), RubToEur },
- { (CurrencyType.Eur, CurrencyType.Rub), EurToRub },
- { (CurrencyType.Eur, CurrencyType.Usd), EurToUsd },
- { (CurrencyType.Usd, CurrencyType.Eur), UsdToEur },
- };
- foreach ( var currencyType in currencyTypes )
- {
- float currencyValue = currentCurrencyType == currencyType ? currentCurrencyValue : 0;
- currencyWallets[currencyType] = currencyValue;
- }
- bool canExit = false;
- while ( !canExit )
- {
- Console.Clear();
- WriteWalletsInfo();
- Console.WriteLine("\nStart currency converting");
- WriteCurrencyList();
- Console.WriteLine( "Select source currency" );
- int sourceCurrencyTypeIndex = int.Parse( Console.ReadLine() ) - indexOffset;
- CurrencyType sourceCurrencyType = (CurrencyType)sourceCurrencyTypeIndex;
- Console.WriteLine( "Select target currency" );
- int targetCurrencyTypeIndex = int.Parse( Console.ReadLine() ) - indexOffset;
- CurrencyType targetCurrencyType = (CurrencyType)targetCurrencyTypeIndex;
- Console.WriteLine( $"Enter value in {sourceCurrencyType}" );
- float sourceCurrencyValue = float.Parse( Console.ReadLine() );
- ConvertCurrency( sourceCurrencyType, targetCurrencyType, sourceCurrencyValue );
- WriteWalletsInfo();
- string properlyExitAnswer = "n";
- Console.WriteLine( $"\nContinue? Enter {properlyExitAnswer} for exit" );
- string continueAnswer = Console.ReadLine();
- canExit = string.Equals( continueAnswer, properlyExitAnswer );
- }
- void WriteWalletsInfo()
- {
- Console.WriteLine("=== Wallets Info ===");
- foreach ( var currencyKey in currencyWallets.Keys )
- Console.WriteLine( $"[{currencyKey}] : {currencyWallets[currencyKey]}" );
- }
- void WriteCurrencyList()
- {
- for ( int i = 0; i < currencyNames.Length; i++ )
- Console.WriteLine( $"[{currencyNames[i]}]: enter {i + indexOffset}" );
- }
- void ConvertCurrency( CurrencyType sourceCurrencyType, CurrencyType targetCurrencyType, float sourceCurrencyValue )
- {
- if ( sourceCurrencyType == targetCurrencyType )
- return;
- Console.WriteLine($"Start convertation: {sourceCurrencyValue} from {sourceCurrencyType} to {targetCurrencyType}");
- if ( sourceCurrencyValue > currencyWallets[sourceCurrencyType] )
- {
- Console.WriteLine($"Not enough moneys in wallet [{sourceCurrencyType}]");
- return;
- }
- Console.WriteLine( $"Convertation is successfully!" );
- currencyWallets[sourceCurrencyType] -= sourceCurrencyValue;
- currencyWallets[targetCurrencyType] += sourceCurrencyValue * currencyRates[(sourceCurrencyType, targetCurrencyType)];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement