Advertisement
sergezhu

Untitled

Apr 23rd, 2023
781
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.61 KB | None | 0 0
  1. namespace ConsoleApp1;
  2.  
  3. using System.Text;
  4.  
  5. public class Task12_03
  6. {
  7.     private const string RubName = "Rub";
  8.     private const string UsdName = "Usd";
  9.     private const string EurName = "Eur";
  10.    
  11.     private const float UsdToRub = 70f;
  12.     private const float RubToUsd = 1f / 67f;
  13.     private const float EurToRub = 80f;
  14.     private const float RubToEur = 1f / 77f;
  15.     private const float UsdToEur = 0.9f;
  16.     private const float EurToUsd = 1.1f;
  17.  
  18.     public void Run()
  19.     {
  20.         Console.InputEncoding = Encoding.Unicode;
  21.         Console.OutputEncoding = Encoding.Unicode;
  22.  
  23.         string startCurrency;
  24.         bool isStartCurrencyValid;
  25.        
  26.         do
  27.         {
  28.             Console.WriteLine( $"Input start currency ( {RubName}, {UsdName}, {EurName} ): " );
  29.             startCurrency = Console.ReadLine();
  30.             isStartCurrencyValid = string.Equals( startCurrency, RubName ) || string.Equals( startCurrency, UsdName ) || string.Equals( startCurrency, EurName );
  31.  
  32.             if ( isStartCurrencyValid == false )
  33.                 Console.WriteLine( $"Currency {startCurrency} is not valid. Try again." );
  34.         }
  35.         while ( isStartCurrencyValid == false );
  36.  
  37.         Console.Write("Input currency start value: ");
  38.         float startCurrencyValue = float.Parse( Console.ReadLine() );
  39.  
  40.         float rubWallet = 0;
  41.         float usdWallet = 0;
  42.         float eurWallet = 0;
  43.        
  44.         switch ( startCurrency )
  45.         {
  46.             case RubName:
  47.                 rubWallet = startCurrencyValue;
  48.                 break;
  49.  
  50.             case UsdName:
  51.                 usdWallet = startCurrencyValue;
  52.                 break;
  53.  
  54.             case EurName:
  55.                 eurWallet = startCurrencyValue;
  56.                 break;
  57.         }
  58.  
  59.         bool canExit = false;
  60.  
  61.         while ( canExit == false )
  62.         {
  63.             Console.Clear();
  64.            
  65.             Console.WriteLine( "=== Wallets Info before operation ===" );
  66.             Console.WriteLine( $"[{RubName}] : {rubWallet}" );
  67.             Console.WriteLine( $"[{UsdName}] : {usdWallet}" );
  68.             Console.WriteLine( $"[{EurName}] : {eurWallet}" );
  69.  
  70.  
  71.             string sourceCurrency;
  72.             bool isSourceCurrencyValid;
  73.        
  74.             do
  75.             {
  76.                 Console.WriteLine( $"Input source currency ( {RubName}, {UsdName}, {EurName} ): " );
  77.                 sourceCurrency = Console.ReadLine();
  78.                 isSourceCurrencyValid = string.Equals( sourceCurrency, RubName ) || string.Equals( sourceCurrency, UsdName ) || string.Equals( sourceCurrency, EurName );
  79.  
  80.                 if ( isSourceCurrencyValid == false )
  81.                     Console.WriteLine( $"Currency {sourceCurrency} is not valid. Try again." );
  82.             }
  83.             while ( isSourceCurrencyValid == false );
  84.  
  85.            
  86.             string targetCurrency;
  87.             bool isTargetCurrencyValid;
  88.        
  89.             do
  90.             {
  91.                 Console.WriteLine( $"Input currency ( {RubName}, {UsdName}, {EurName} ): " );
  92.                 targetCurrency = Console.ReadLine();
  93.                 isTargetCurrencyValid = string.Equals( targetCurrency, RubName ) || string.Equals( targetCurrency, UsdName ) || string.Equals( targetCurrency, EurName );
  94.  
  95.                 if ( isTargetCurrencyValid == false )
  96.                     Console.WriteLine( $"Currency {targetCurrency} is not valid. Try again." );
  97.             }
  98.             while ( isTargetCurrencyValid == false );
  99.  
  100.  
  101.             Console.WriteLine( $"Input value in {sourceCurrency}" );
  102.             float sourceCurrencyValue = float.Parse( Console.ReadLine() );
  103.  
  104.  
  105.             if ( string.Equals( sourceCurrency, targetCurrency ) == false )
  106.             {
  107.                 Console.WriteLine( $"Start convertation: {sourceCurrencyValue} from {sourceCurrency} to {targetCurrency}" );
  108.  
  109.                 bool isEnoughMoney = false;
  110.                
  111.                 switch ( sourceCurrency )
  112.                 {
  113.                     case RubName:
  114.                         isEnoughMoney = sourceCurrencyValue <= rubWallet;
  115.                         if ( isEnoughMoney )
  116.                             rubWallet -= sourceCurrencyValue;
  117.                         break;
  118.                    
  119.                     case UsdName:
  120.                         isEnoughMoney = sourceCurrencyValue <= usdWallet;
  121.                         if ( isEnoughMoney )
  122.                             usdWallet -= sourceCurrencyValue;
  123.                         break;
  124.                    
  125.                     case EurName:
  126.                         isEnoughMoney = sourceCurrencyValue <= eurWallet;
  127.                         if ( isEnoughMoney )
  128.                             eurWallet -= sourceCurrencyValue;
  129.                         break;
  130.                 }
  131.  
  132.                 if ( isEnoughMoney )
  133.                 {
  134.                     float convertMultiplier = 1f;
  135.                    
  136.                     switch ( sourceCurrency )
  137.                     {
  138.                         case RubName:
  139.                             switch ( targetCurrency )
  140.                             {
  141.                                 case UsdName:
  142.                                     convertMultiplier = RubToUsd;
  143.                                     break;
  144.  
  145.                                 case EurName:
  146.                                     convertMultiplier = RubToEur;
  147.                                     break;
  148.                             }
  149.                             break;
  150.  
  151.                         case UsdName:
  152.                             switch ( targetCurrency )
  153.                             {
  154.                                 case RubName:
  155.                                     convertMultiplier = UsdToRub;
  156.                                     break;
  157.  
  158.                                 case EurName:
  159.                                     convertMultiplier = UsdToEur;
  160.                                     break;
  161.                             }
  162.                             break;
  163.  
  164.                         case EurName:
  165.                             switch ( targetCurrency )
  166.                             {
  167.                                 case RubName:
  168.                                     convertMultiplier = EurToRub;
  169.                                     break;
  170.  
  171.                                 case UsdName:
  172.                                     convertMultiplier = EurToUsd;
  173.                                     break;
  174.                             }
  175.                             break;
  176.                     }
  177.                    
  178.                     switch ( targetCurrency )
  179.                     {
  180.                         case RubName:
  181.                             rubWallet += sourceCurrencyValue * convertMultiplier;
  182.                             break;
  183.  
  184.                         case UsdName:
  185.                             usdWallet += sourceCurrencyValue * convertMultiplier;
  186.                             break;
  187.  
  188.                         case EurName:
  189.                             eurWallet += sourceCurrencyValue * convertMultiplier;
  190.                             break;
  191.                     }
  192.  
  193.                     Console.WriteLine( $"Convertation is successfully!" );
  194.                 }
  195.                 else
  196.                 {
  197.                     Console.WriteLine( $"Not enough moneys in wallet [{sourceCurrency}]" );
  198.                 }
  199.             }
  200.  
  201.             Console.WriteLine( "=== Wallets Info after operation ===" );
  202.             Console.WriteLine( $"[{RubName}] : {rubWallet}" );
  203.             Console.WriteLine( $"[{UsdName}] : {usdWallet}" );
  204.             Console.WriteLine( $"[{EurName}] : {eurWallet}" );
  205.            
  206.             string properlyExitAnswer = "n";
  207.             Console.WriteLine( $"\nContinue? Enter {properlyExitAnswer} for exit" );
  208.             string continueAnswer = Console.ReadLine();
  209.  
  210.             canExit = string.Equals( continueAnswer, properlyExitAnswer );
  211.         }
  212.     }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement