Advertisement
Kushtrim

NumberNames

May 15th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.65 KB | None | 0 0
  1.  
  2. /**
  3.  *If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
  4.  *If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?
  5.  *NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters.
  6.  *The use of "and" when writing out numbers is in compliance with British usage.
  7.  *
  8.  * @author Kushtrim
  9.  * @version 1.01
  10.  */
  11. public class NumberNames
  12.  
  13. {
  14.     int[] ones =  {0,"one".length(),"two".length(),"three".length(),"four".length(),"five".length(),"six".length(),"seven".length(),"eight".length(),"nine".length()};
  15.     int[] teens = {"ten".length(),"eleven".length(),"twelve".length(),"thirteen".length(),"fourteen".length(),"fifteen".length(),"sixteen".length(),"seventeen".length(),"eighteen".length(),"nineteen".length()};
  16.     int[] tens = {0,0,"twenty".length(),"thirty".length(),"forty".length(),"fifty".length(),"sixty".length(),"seventy".length(),"eighty".length(),"ninety".length()};
  17.     int AND = 3;
  18.     int HUNDRED = 7;
  19.  
  20.     public static void main(String args[])
  21.     {
  22.         NumberNames llogarit = new NumberNames();
  23.        
  24.         int shuma=0;
  25.        
  26.         for (int i = 1 ; i!=1001 ; i++)
  27.         {
  28.             shuma+= llogarit.countLetters(i);
  29.         }
  30.         System.out.println(shuma);
  31.  
  32.     }
  33.     /**
  34.      * Merr nje numer ( deri ne 1000), dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
  35.      */
  36.     public int countLetters(int number)
  37.     {
  38.         int n = (number+"").length();
  39.         int letterNumber=0;
  40.  
  41.         switch(n)
  42.         {
  43.             case 1 :  {
  44.                        letterNumber = processOnes(number);
  45.                        break;
  46.                       }
  47.             case 2 :  {
  48.                         letterNumber = processTens(number);
  49.                         break;
  50.                       }
  51.             case 3 :  {
  52.                         letterNumber = processHundreds(number);
  53.                         break;
  54.                       }
  55.             case 4 :  {
  56.                         letterNumber = "oneThousand".length();
  57.                         break;
  58.                       }
  59.         }
  60.         return letterNumber;
  61.     }
  62.     /**
  63.      * Merr nje numer nje-shifror, dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
  64.      */
  65.     private int processOnes( int nr)
  66.     {
  67.         int answer = ones[nr];  // numri ne vargun ones, me indeksin nr, paraqet numrin e shkronjave qe do duheshin per ta shkruar atë (nr) ( ne gjuhen angleze )
  68.         return answer;
  69.     }
  70.      /**
  71.      * Merr nje numer prej 10-19 dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
  72.      */
  73.     private int processTeens( int nr)
  74.     {
  75.         int o = nr%10;           // p.sh.  per 12, llogarit 2
  76.         int answer = teens[o];  // numri ne vargun teens, me indeksin o, paraqet numrin e shkronjave qe do duheshin per ta shkruar  (nr) ( ne gjuhen angleze )
  77.         return answer;
  78.     }
  79.      /**
  80.      * Merr nje numer dy-shifror, dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
  81.      */
  82.     private int processTens( int nr)
  83.     {
  84.         int t = nr/10;    // p.sh.  per 53, llogarit 5
  85.         int o = nr%10;    // p.sh.  per 53, llogarit 3
  86.         int answer=0;
  87.         if ( t == 1)
  88.         {
  89.             answer = processTeens(nr);  // pra eshte ne intervalin 10-19
  90.         }
  91.         else
  92.         {
  93.             // numri ne vargun tens, me indeksin t, paraqet numrin e shkronjave qe do duheshin per ta shkruar atë (t*10) ( ne gjuhen angleze )
  94.             //p.sh. per 53, tens[5] e kthen gjatesine e "fifty", dhe e therrasim metoden processOnes(3), e cila kthen gjatesine e "three"
  95.             answer = tens[t] + processOnes(o);  
  96.         }
  97.         return answer;
  98.     }
  99.      /**
  100.      * Merr nje numer tre-shifror, dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
  101.      */
  102.     private int processHundreds( int number)
  103.     {
  104.         int h = number/100;    // p.sh.  per 532 kthen 5
  105.         int t = number%100;    // p.sh.  per 532 kthen 32
  106.         int answer=0;
  107.         if (t==0)
  108.         {
  109.            
  110.             answer = ones[h] + HUNDRED; // per 100,200,...,900  thuhet ONE ( ose TWO,THREE,...,NINE) HUNDRED
  111.         }
  112.         else
  113.         {
  114.             // formati : (ONE,...NINE) HUNDRED AND (ONE, TWO,...,NINETY-NINE)
  115.             answer = ones[h] + HUNDRED + AND + processTens(t);
  116.         }
  117.          
  118.         return answer;
  119.     }
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement