Advertisement
Heart_Crafter

Numbers to Wave

Nov 21st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.63 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp88
  4. {
  5.     class Program
  6.     {
  7.         /// <summary>
  8.         /// Program Entry
  9.         /// </summary>
  10.         /// <param name="args">Unused Args</param>
  11.         static void Main(string[] args)
  12.         {
  13.             string input = string.Empty;
  14.  
  15.             do
  16.             {
  17.                 try
  18.                 {
  19.                     Console.WriteLine("Please enter a number: ");
  20.                     input = Console.ReadLine();
  21.  
  22.                     // Fetch result if string is not empty
  23.                     if (input != string.Empty)
  24.                     {
  25.                         string retVal = string.Empty;
  26.  
  27.                         // Add cents if not provided
  28.                         if (!input.Contains(".")) input += ".0";
  29.  
  30.                         // Split string by . to dollars and cent
  31.                         string[] i = input.Split('.');
  32.  
  33.                         // Get dollar value
  34.                         retVal = NumbersToWav(int.Parse(i[0])) + " + dollars.wav";
  35.  
  36.                         // Get cent value
  37.                         if (int.Parse(i[1]) > 0) retVal += " and " + NumbersToWav(int.Parse(i[1])) + " + cents.wav";
  38.                        
  39.                         // Print result
  40.                         Console.WriteLine(retVal + "\r\n");
  41.                     }
  42.                 }
  43.                 catch (Exception ex)
  44.                 {
  45.                     Console.WriteLine("Error {0}\r\nPlease enter a valid number.\r\n", ex.Message);
  46.                 }                
  47.  
  48.             } while (input != string.Empty);
  49.  
  50.         }
  51.  
  52.         /// <summary>
  53.         /// Converts numeric value to .wav file names
  54.         /// </summary>
  55.         /// <param name="number">Number between -2,147,483,648 to +2,147,483,648</param>
  56.         /// <returns>Concated .wav file names based on numbers</returns>
  57.         public static string NumbersToWav(int number)
  58.         {
  59.             string retVal = string.Empty;
  60.  
  61.             if (number == 0) return "zero.wav";
  62.  
  63.             if (number < 0) return "minus.wav" + NumbersToWav(-number);
  64.  
  65.             if (number > 99) ResolveOver99(ref number, ref retVal);
  66.  
  67.             if (number > 0) ResolveLessThan100(number, ref retVal);
  68.  
  69.             return retVal; //.Trim().Trim('+').Trim();
  70.         }
  71.  
  72.         /// <summary>
  73.         /// Adds + sign if input is not empty
  74.         /// </summary>
  75.         /// <param name="input">String to append to</param>
  76.         /// <returns>"+" + input</returns>
  77.         public static string AddPlusSign(string input)
  78.         {
  79.             return (input == string.Empty ? string.Empty : " + ");
  80.         }
  81.  
  82.         /// <summary>
  83.         /// Resolves numbers over 99
  84.         /// </summary>
  85.         /// <param name="number">used to evaluate the number and returs remainder</param>
  86.         /// <param name="retVal">used for results, appends to existing data</param>
  87.         public static void ResolveOver99(ref int number, ref string retVal)
  88.         {
  89.             // Greater or equal to million
  90.             if ((number / 1000000) > 0)
  91.             {
  92.                 retVal += AddPlusSign(retVal) + NumbersToWav(number / 1000000) + " + million.wav"; // get millions value
  93.                 number %= 1000000; // set remainder from millions value
  94.             }
  95.  
  96.             // Greater or equal to thousand
  97.             if ((number / 1000) > 0)
  98.             {
  99.                 retVal += AddPlusSign(retVal) + NumbersToWav(number / 1000) + " + thousand.wav"; // get thousands value
  100.                 number %= 1000; // set remainder from thousands value
  101.             }
  102.  
  103.             // Greater or equal to hundred
  104.             if ((number / 100) > 0)
  105.             {
  106.                 retVal += AddPlusSign(retVal) + NumbersToWav(number / 100) + " + hundred.wav"; // get hundreds value
  107.                 number %= 100; // set remainder from hundreds value
  108.             }
  109.         }
  110.  
  111.         /// <summary>
  112.         /// Resolves numbers less than 100
  113.         /// </summary>
  114.         /// <param name="number">used to evaluate the number</param>
  115.         /// <param name="retVal">used for results, appends to existing data</param>
  116.         public static void ResolveLessThan100(int number, ref string retVal)
  117.         {
  118.             if (number < 20)
  119.             {
  120.                 retVal += AddPlusSign(retVal) + number + ".wav";
  121.             }
  122.             else
  123.             {
  124.                 retVal += AddPlusSign(retVal) + (number - (number % 10)) + ".wav";
  125.                 if ((number % 10) > 0)
  126.                 {
  127.                     retVal += AddPlusSign(retVal) + number % 10 + ".wav";
  128.                 }
  129.             }
  130.         }
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement