Advertisement
Guest User

BaseToBase

a guest
Mar 6th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.80 KB | None | 0 0
  1. import java.util.Vector;
  2.  
  3.  
  4.  
  5. public class trasforma
  6. {
  7.     int numero;
  8.     int baseIniziale;
  9.     int baseFinale;
  10.    
  11.    
  12.     public trasforma(int numero, int baseIniziale, int baseFinale)
  13.     {
  14.         this.numero=numero;
  15.         this.baseIniziale=baseIniziale;
  16.         this.baseFinale=baseFinale;
  17.         //creo un array alfabeto
  18.        
  19.     }
  20.    
  21.     public int getNumero()
  22.     {
  23.         return this.numero;
  24.     }
  25.     public int getBaseFinale()
  26.     {
  27.         return this.baseFinale;
  28.        
  29.     }
  30.     public int getBaseIniziale()
  31.     {
  32.         return this.baseIniziale;
  33.     }
  34.     /*
  35.      * CReo un metodo che mi permetta di traformare il numero in base inziale nel numero nella base finale
  36.      * Solo che dovrò fare dei piccoli accorgimenti :
  37.      * -dalla base 11, compresa, dovrò aggiungere le lettere
  38.      */
  39.     private String trasformazione()
  40.     {
  41.         String resto="";
  42.         //Definisco un array che mi aiuti la lettura e la  modifica di esso
  43.         Vector restoComodo= new Vector();
  44.         int comodo=0;
  45.         int quoziente=numero;
  46.         int posizione=0;
  47.         if(numero==0)
  48.         {
  49.             return "Errore hai inserito numero nullo";
  50.         }
  51.         do
  52.         {
  53.             comodo=quoziente%baseFinale;
  54.             quoziente=quoziente/baseFinale;
  55.  
  56.             restoComodo.add(comodo);
  57.            
  58.         }
  59.         while(quoziente!= 0);
  60.        
  61.         /*
  62.          * Richiamo un metodo che mi modifichi in base alla basefinale il resto
  63.          */
  64.         resto=modifica(restoComodo);
  65.            
  66.         return resto;
  67.     }
  68.    
  69.     private String modifica(Vector restoArray)
  70.     {
  71.         String app="";
  72.         /*
  73.          * Definisco in due blocchi, base finale maggiore di 11 o base finale minore di 11
  74.          */
  75.         int c=0;
  76.         if(baseFinale>=11)
  77.         {
  78.             c=1;
  79.         }
  80.        
  81.         switch(c)
  82.         {
  83.         case 0:
  84.             //richiamo metodo che controlla il numero in base alla base minore di 11
  85.             app=minore11(restoArray);
  86.             break;
  87.         case 1:
  88.             //richiamo metodo che modifica il numeor in base alla base maggiore di 10 massima di 36
  89.             app=maggiore11(restoArray);
  90.             break;
  91.         }
  92.         return app;
  93.     }
  94.    
  95.     private String minore11(Vector Array)
  96.     {
  97.         String comodo="";
  98.         int p=Array.size()-1;
  99.         switch(baseFinale)
  100.         {
  101.         case 2:
  102.         case 3:
  103.         case 4:
  104.         case 5:
  105.         case 6:
  106.         case 7:
  107.         case 8:
  108.         case 9:
  109.         case 10:
  110.             for(int i=0;i<Array.size();i++)
  111.             {
  112.                 comodo=comodo+Array.elementAt(p);
  113.                 p--;
  114.             }
  115.            
  116.             break;
  117.         }
  118.  
  119.         return comodo;
  120.     }
  121.    
  122.     private String maggiore11(Vector Array)
  123.     {
  124.         String comodo="";
  125.         int p=Array.size()-1;
  126.        
  127.         int c=0;
  128.         //ora max base 16
  129.         for(int i=0;i<Array.size();i++)
  130.         {
  131.             c=(Integer) Array.get(p);
  132.             if(c>=10)
  133.             {
  134.                 comodo=comodo+convertiNum(c);
  135.                 p--;
  136.                
  137.             }
  138.             else
  139.             {
  140.                 comodo=comodo+Array.elementAt(p);
  141.                 p--;
  142.             }
  143.         }
  144.         return comodo;
  145.     }
  146.    
  147.    
  148.     private String convertiNum(int c1)
  149.     {
  150.         String fin="";
  151.         int comodo=0;
  152.         char [] alfabeto={'A', 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' };
  153.         int [] supporto={ 10 ,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36};
  154.  
  155.         for(int i=0;i<letter();i++)
  156.         {
  157.             if(c1==supporto[i])
  158.             {
  159.                 fin=fin+alfabeto[i];
  160.                 c1=-1;
  161.             }
  162.         }
  163.         if(c1!=-1)
  164.         {
  165.             //ridivido il resto
  166.             fin=fin+ricalcoloResto(c1);
  167.            
  168.         }
  169.         return fin;
  170.     }
  171.    
  172.     private String ricalcoloResto(int c2)
  173.     {
  174.         String fin="";
  175.         int comodo=c2;
  176.         int resto=0;
  177.         Vector array =new Vector();
  178.         int p1=array.size()-1;
  179.         int p=0;
  180.         do
  181.         {
  182.             resto=comodo%baseFinale;
  183.             comodo=comodo/baseFinale;
  184.             array.add(resto);
  185.             p++;
  186.         }while(comodo!=0);
  187.        
  188.         for(int j=0;j<array.size();j++)
  189.         {
  190.             fin=fin+array.elementAt(p1);
  191.             p--;
  192.         }
  193.         return fin;
  194.     }
  195.     private int letter()
  196.     {
  197.         //restituisce la massima lettera che si può avere nella codifica
  198.         int lett=baseFinale-10;
  199.         return lett;
  200.     }
  201.     public String toString()
  202.     {
  203.         String resto="";
  204.         String finale;
  205.         resto=resto+trasformazione();
  206.         finale=resto;
  207.         return finale;
  208.     }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement