[Informatica] Esercizi java sulla conversione binario decimale

« Older   Newer »
  Share  
qerubin
view post Posted on 18/1/2009, 18:23




Esercizio 1:
Dato un numero binario, convertilo in decimale.
CODICE
import java.io.*;
import java.lang.Math;
public class bindecstring{
   public static void main (String args []) throws IOException{
       InputStreamReader In=new InputStreamReader (System.in);
       BufferedReader Tastiera=new BufferedReader (In);
       System.out.println("Inserisci il numero binario da convertire in decimale: ");
       String bin=Tastiera.readLine();
       String temp="";
       int j=0, n=bin.length(),bte;
       double dec=0;
       for (int i=n-1; i>=0; i--)
       {
           bte=Integer.parseInt(temp+bin.charAt(i));
           switch(bte)
           {
               case 0:
               {
                   dec=dec;
                   break;
               }
               case 1:
               {
                   dec=dec+Math.pow(2,j);
                   break;
               }
               default:
                   System.out.println("numero inserito non valido");
           }
           j++;
       }
       System.out.println("Il numero binario "+bin+" in decimale è "+dec);
   }
}

Esercizio 2:
Dati due numeri binari, convertirli in decimale e sommarli, quindi convertire la somma in binario.
CODICE
import java.io.*;
import java.lang.Math;
public class bindecsomma{
   public static void main (String args []) throws IOException{
       InputStreamReader In=new InputStreamReader (System.in);
       BufferedReader Tastiera=new BufferedReader (In);
       System.out.println("Inserisci i numeri binari da convertire in decimale e sommare: ");
       String bin=Tastiera.readLine(),bin1=Tastiera.readLine();
       String temp="";
       int j=0, n=bin.length(), n1=bin1.length(),bte;
       double dec=0,dec1=0;
       for (int i=n-1; i>=0; i--)
       {
           bte=Integer.parseInt(temp+bin.charAt(i));
           switch(bte)
           {
               case 0:
               {
                   dec=dec;
                   break;
               }
               case 1:
               {
                   dec=dec+Math.pow(2,j);
                   break;
               }
               default:
                   System.out.println("numero inserito non valido");
           }
           j++;
       }
       j=0;
       for (int i=n1-1; i>=0; i--)
       {
           bte=Integer.parseInt(temp+bin1.charAt(i));
           switch(bte)
           {
               case 0:
               {
                   dec1=dec1;
                   break;
               }
               case 1:
               {
                   dec1=dec1+Math.pow(2,j);
                   break;
               }
               default:
                   System.out.println("numero inserito non valido");
           }
           j++;
       }
       double decsom=dec+dec1,pot=decsom-1, sot;
       int esp=0;
       String binsom="";
       for(int i=0; pot<decsom; i++)
       {
           pot=Math.pow(2,i);
           esp=i-1;
       }
       for(int i=esp; i>=0; i--)
       {
           sot=decsom-Math.pow(2,1);
           if(sot!=0)
               binsom=binsom+1;
           else
               binsom=binsom+0;
       }
       System.out.println("La somma dei numeri "+bin+" e "+bin1+" è: "+binsom);
   }
}

Esercizio 3:
Date due stringhe di ugual lunghezza contenenti numeri binari, sommare i due numeri senza effettuare conversioni.
CODICE
import java.io.*;
public class sommastringbin{
   public static void main (String args []) throws IOException{
       InputStreamReader In=new InputStreamReader (System.in);
       BufferedReader Tastiera=new BufferedReader (In);
       System.out.println("Inserisci i due numeri binari di uguale lunghezza da sommare: ");
       String bin=Tastiera.readLine(),bin1=Tastiera.readLine(),som="";
       int rip=0,err=0;
       char a1,a2;
       if (bin.length()==bin1.length())
       {
           for(int i=(bin.length()-1); i>=0; i--)
           {
               a1=bin.charAt(i);
               a2=bin1.charAt(i);
               if(rip==0)
                   switch(a1)
                   {
                       case '0':
                       {
                           if(a2=='1')
                           {
                               som='1'+som;
                               rip=0;
                           }
                           else if (a2=='0')
                               {
                                   som='0'+som;
                                   rip=0;
                               }
                               else
                                   err++;
                           break;
                       }
                       case '1':
                       {
                           if(a2=='1')
                           {
                               som='0'+som;
                               rip=1;
                           }
                           else if (a2=='0')
                               {
                                   som='1'+som;
                                   rip=0;
                               }
                               else
                                   err++;
                           break;
                       }
                       default:
                           err++;
                   }
               else
               {
                   switch(a1)
                   {
                       case '0':
                       {
                           if(a2=='1')
                           {
                               som='0'+som;
                               rip=1;
                           }
                           else if (a2=='0')
                               {
                                   som='1'+som;
                                   rip=0;
                               }
                               else
                                   err++;
                           break;
                       }
                       case '1':
                       {
                           if(a2=='1')
                           {
                               som='1'+som;
                               rip=1;
                           }
                           else if (a2=='0')
                               {
                                   som='0'+som;
                                   rip=1;
                               }
                               else
                                   err++;
                           break;
                       }
                       default:
                           err++;
                   }
               }
           }
           if (rip==1)
               som='1'+som;
           if(err==0)
               System.out.println("La somma tra "+bin+" e "+bin1+" è: "+som);
           else
               System.out.println("Sono stati inseriti caratteri non validi.");
       }
       else
           System.out.println("I numeri inseriti hanno lunghezza diversa.");
   }
}



Se avete domande sul loro funzionamento o avete trovato errori chiedete/indicate qui di seguito... grazie
 
Top
0 replies since 18/1/2009, 18:23   3221 views
  Share