fork(5) download
  1. using System;
  2. using System.Collections.Generic;
  3. public class Test
  4. {
  5. public static Dictionary<string,int> NumDict;
  6. public static Dictionary<string,int> MilharDict;
  7. public static int ExtensoToInteiro(string extenso)
  8. {
  9.  
  10. if (NumDict == null)
  11. {
  12. NumDict = new Dictionary<string,int>();
  13. MilharDict = new Dictionary<string,int>();
  14.  
  15. NumDict.Add("zero",0);
  16. NumDict.Add("um",1);
  17. NumDict.Add("dois",2);
  18. NumDict.Add("três",3);
  19. NumDict.Add("quatro",4);
  20. NumDict.Add("cinco",5);
  21. NumDict.Add("seis",6);
  22. NumDict.Add("sete",7);
  23. NumDict.Add("oito",8);
  24. NumDict.Add("nove",9);
  25.  
  26. NumDict.Add("dez",10);
  27. NumDict.Add("onze",11);
  28. NumDict.Add("doze",12);
  29. NumDict.Add("treze",13);
  30. NumDict.Add("quatorze",14);
  31. NumDict.Add("quinze",15);
  32. NumDict.Add("dezesseis",16);
  33. NumDict.Add("dezessete",17);
  34. NumDict.Add("dezoito",18);
  35. NumDict.Add("dezenove",19);
  36.  
  37. NumDict.Add("vinte",20);
  38. NumDict.Add("trinta",30);
  39. NumDict.Add("quarenta",40);
  40. NumDict.Add("cinquenta",50);
  41. NumDict.Add("sessenta",60);
  42. NumDict.Add("setenta",70);
  43. NumDict.Add("oitenta",80);
  44. NumDict.Add("noventa",90);
  45.  
  46. NumDict.Add("cem",100);
  47. NumDict.Add("cento",100);
  48. NumDict.Add("duzentos",200);
  49. NumDict.Add("trezentos",300);
  50. NumDict.Add("quatrocentos",400);
  51. NumDict.Add("quinhentos",500);
  52. NumDict.Add("seiscentos",600);
  53. NumDict.Add("setecentos",700);
  54. NumDict.Add("oitocentos",800);
  55. NumDict.Add("novecentos",900);
  56.  
  57. MilharDict.Add("mil",1000);
  58. MilharDict.Add("milhão",1000000);
  59. MilharDict.Add("milhões",1000000);
  60. MilharDict.Add("bilhão",1000000000);
  61. MilharDict.Add("bilhões",1000000000);
  62. }
  63.  
  64. int resultado = 0;
  65. int grupoCorrente = 0;
  66.  
  67. foreach (var word in extenso.Split(' '))
  68. {
  69. if (NumDict.ContainsKey(word))
  70. {
  71. grupoCorrente += NumDict[word];
  72. }
  73. else if (MilharDict.ContainsKey(word))
  74. {
  75. resultado += (grupoCorrente == 0 ? 1 : grupoCorrente) * MilharDict[word];
  76. grupoCorrente = 0;
  77. }
  78. }
  79.  
  80. resultado += grupoCorrente;
  81.  
  82. return resultado;
  83. }
  84. public static void Main()
  85. {
  86. Console.WriteLine(ExtensoToInteiro("trinta mil e um real"));
  87. }
  88. }
  89.  
  90.  
  91.  
  92.  
Success #stdin #stdout 0.02s 15164KB
stdin
Standard input is empty
stdout
30001