/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
try {
int opcion, close = 0 ,n1,n2, x1, y2;
/*De claracion del BufferedReader, para ingresar numeros por teclado*/
/*Esta condicion la utilizo al principio del programa para que
* cuando se ejecute alguna operacion de la calculadora, se vuelva
* a abrir el menu, para que asi no finalize el programa, hasta que
* se elija la opcion 6 (salir)
*/
System .
out .
println ( "Ingrese primer numero binario" ) ; x = is.readLine ( ) ;
while ( validarBinario( x) == false ) {
System .
out .
println ( "El numero ingresado no es binario, ingrese otro" ) ; x = is.readLine ( ) ;
}
n1 = binario2Decimal( x1) ;
System .
out .
println ( "Ingrese segundo numero binario" ) ; y= is.readLine ( ) ;
while ( validarBinario( y) == false ) {
System .
out .
println ( "Ingrese segundo numero binario" ) ; y= is.readLine ( ) ;
}
n2= binario2Decimal( y2) ;
while ( close == 0 ) {
System .
out .
println ( "Elija la operacion a realizar" ) ; System .
out .
println ( "Opcion 1: Suma" ) ; System .
out .
println ( "Opcion 2: Resta" ) ; System .
out .
println ( "Opcion 3: Multiplicacion" ) ; System .
out .
println ( "Opcion 4: Division" ) ; System .
out .
println ( "Opcion 5: Salir" ) ;
System .
out .
println ( "Ingrese numero de la Operacion: " ) ; opcion
= Integer .
parseInt ( is.
readLine ( ) ) ;
switch ( opcion)
{
/*La opcion 1 que permite sumar la cantidad de numeros que sea ingresado por el usuario
* Retorna: Int
*/
case 1 : FuncionSumar( n1 ,n2) ;
break ;
case 2 : FuncionRestar( n1 , n2) ;
break ;
case 3 : FuncionMultiplicar( n1, n2) ;
break ;
case 4 : FuncionDividir( n1,n2) ;
break ;
case 5 :
/*Lo que hace el caso 6 es darle un valor a la variable close
que sea distinto de 0,para que finalize el ciclo que puse
al principio para el menu, y asi terminar de ejecutar el programa*/
close = 1 ;
break ;
default :
System .
out .
println ( "La opcion ingresada es incorrecta" ) ; }
}
System .
err .
println ( "Numero no valido" ) ; }
System .
err .
println ( "Unexpected IO ERROR: " + e
) ; }
}
public static void FuncionSumar( int n1,int n2) {
int suma,resultado;
suma = n1 + n2;
resultado = decimal2Binario ( suma) ;
System .
out .
println ( "El resultado es: " + resultado
) ; }
public static void FuncionRestar( int n1, int n2) {
int resta, resultado;
if ( n1 > n2) {
resta = n1 - n2;
} else {
resta = n2- n1;
}
resultado = decimal2Binario( resta) ;
System .
out .
println ( "El resultado es: " + resultado
) ;
}
public static void FuncionMultiplicar( int n1, int n2) {
int multi,resultado;
multi= n1* n2;
resultado = decimal2Binario( multi) ;
System .
out .
println ( "El resultado es: " + resultado
) ;
}
public static void FuncionDividir( int n1, int n2) {
int div,resultado;
if ( n1> n2) {
div = n1/ n2;
}
else {
div = n2/ n1;
}
resultado = decimal2Binario( div) ;
System .
out .
println ( "El resultado es: " + resultado
) ; }
public static int binario2Decimal ( int binario) {
int factor = 1 , decimal = 0 ,d;
while ( binario > 0 ) {
d= binario% 10;
binario = binario/ 10 ;
decimal = decimal + factor* d;
factor = factor * 2 ;
}
return decimal;
}
public static int decimal2Binario ( int decimal) {
int factor = 1 , binario = 0 ,d;
while ( decimal > 0 ) {
d= decimal% 2;
decimal = decimal / 2 ;
binario = binario + factor * d;
factor = factor * 10 ;
}
return binario;
}
public static boolean validarBinario
( String validador
) { boolean aux = true ;
for ( int i = 0 ; i < validador.length ( ) ; i++ ) {
char c = validador.charAt ( i) ;
if ( c == '0' || c == '1' ) {
} else
aux = false ;
}
if ( aux)
return true ;
else
return false ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCSB0cnl7CiAgICAgICAgICAgIGludCBvcGNpb24sIGNsb3NlID0gMCxuMSxuMiwgeDEsIHkyOwogICAgICAgICAgICBTdHJpbmcgeCwgeTsKICAgICAgICAgICAgLypEZSBjbGFyYWNpb24gZGVsIEJ1ZmZlcmVkUmVhZGVyLCBwYXJhIGluZ3Jlc2FyIG51bWVyb3MgcG9yIHRlY2xhZG8qLwogICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBpcyA9IG5ldyBCdWZmZXJlZFJlYWRlcgogICAgICAgICAgICAgICAgICAgIChuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvKkVzdGEgY29uZGljaW9uIGxhIHV0aWxpem8gYWwgcHJpbmNpcGlvIGRlbCBwcm9ncmFtYSBwYXJhIHF1ZSAKICAgICAgICAgICAgICogY3VhbmRvIHNlIGVqZWN1dGUgYWxndW5hIG9wZXJhY2lvbiBkZSBsYSBjYWxjdWxhZG9yYSwgc2UgdnVlbHZhCiAgICAgICAgICAgICAqIGEgYWJyaXIgZWwgbWVudSwgcGFyYSBxdWUgYXNpIG5vIGZpbmFsaXplIGVsIHByb2dyYW1hLCBoYXN0YSBxdWUKICAgICAgICAgICAgICogc2UgZWxpamEgbGEgb3BjaW9uIDYgKHNhbGlyKQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbmdyZXNlIHByaW1lciBudW1lcm8gYmluYXJpbyIpOwogICAgICAgICAgICB4ID0gaXMucmVhZExpbmUoKTsKICAgICAgICAgICAgd2hpbGUodmFsaWRhckJpbmFyaW8oeCkgPT0gZmFsc2UpewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbCBudW1lcm8gaW5ncmVzYWRvIG5vIGVzIGJpbmFyaW8sIGluZ3Jlc2Ugb3RybyIpOwogICAgICAgICAgICAgICAgeCA9IGlzLnJlYWRMaW5lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgeDEgPSBJbnRlZ2VyLnBhcnNlSW50KHgpOwogICAgICAgICAgICBuMSA9IGJpbmFyaW8yRGVjaW1hbCh4MSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbmdyZXNlIHNlZ3VuZG8gbnVtZXJvIGJpbmFyaW8iKTsKICAgICAgICAgICAgeT0gaXMucmVhZExpbmUoKTsKICAgICAgICAgICAgd2hpbGUodmFsaWRhckJpbmFyaW8oeSk9PSBmYWxzZSl7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkluZ3Jlc2Ugc2VndW5kbyBudW1lcm8gYmluYXJpbyIpOwogICAgICAgICAgICAgICAgeT0gaXMucmVhZExpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB5MiA9IEludGVnZXIucGFyc2VJbnQoeSk7CiAgICAgICAgICAgIG4yPSBiaW5hcmlvMkRlY2ltYWwoeTIpOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIHdoaWxlIChjbG9zZSA9PSAwKXsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRWxpamEgbGEgb3BlcmFjaW9uIGEgcmVhbGl6YXIiKTsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3BjaW9uIDE6IFN1bWEiKTsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3BjaW9uIDI6IFJlc3RhIik7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9wY2lvbiAzOiBNdWx0aXBsaWNhY2lvbiIpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPcGNpb24gNDogRGl2aXNpb24iKTsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3BjaW9uIDU6IFNhbGlyIik7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5ncmVzZSBudW1lcm8gZGUgbGEgT3BlcmFjaW9uOiAiKTsKICAgICAgICAgICAgICAgIG9wY2lvbiA9IEludGVnZXIucGFyc2VJbnQoaXMucmVhZExpbmUoKSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHN3aXRjaChvcGNpb24pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLypMYSBvcGNpb24gMSBxdWUgcGVybWl0ZSBzdW1hciBsYSBjYW50aWRhZCBkZSBudW1lcm9zIHF1ZSBzZWEgaW5ncmVzYWRvIHBvciBlbCB1c3VhcmlvCiAgICAgICAgICAgICAgICAgICAgICogUmV0b3JuYTogSW50CiAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBGdW5jaW9uU3VtYXIoIG4xICxuMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IEZ1bmNpb25SZXN0YXIobjEgLCBuMik7ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IEZ1bmNpb25NdWx0aXBsaWNhcihuMSwgbjIpOyAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IEZ1bmNpb25EaXZpZGlyKG4xLG4yKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICAvKkxvIHF1ZSBoYWNlIGVsIGNhc28gNiBlcyBkYXJsZSB1biB2YWxvciBhIGxhIHZhcmlhYmxlIGNsb3NlCiAgICAgICAgICAgICAgICAgICAgICAgICBxdWUgc2VhIGRpc3RpbnRvIGRlIDAscGFyYSBxdWUgZmluYWxpemUgZWwgY2ljbG8gcXVlIHB1c2UKICAgICAgICAgICAgICAgICAgICAgICAgIGFsIHByaW5jaXBpbyBwYXJhIGVsIG1lbnUsIHkgYXNpIHRlcm1pbmFyIGRlIGVqZWN1dGFyIGVsIHByb2dyYW1hKi8KICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2UgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkxhIG9wY2lvbiBpbmdyZXNhZGEgZXMgaW5jb3JyZWN0YSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfWNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZXgpewogICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIk51bWVybyBubyB2YWxpZG8iKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpewogICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVuZXhwZWN0ZWQgSU8gRVJST1I6ICIgKyBlKTsKICAgICAgICB9Cgl9CglwdWJsaWMgc3RhdGljIHZvaWQgRnVuY2lvblN1bWFyKGludCBuMSxpbnQgbjIpewogICAgICAgIGludCBzdW1hLHJlc3VsdGFkbzsKICAgICAgICBzdW1hID0gbjEgK24yOwogICAgICAgIHJlc3VsdGFkbyA9IGRlY2ltYWwyQmluYXJpbyAoc3VtYSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbCByZXN1bHRhZG8gZXM6ICIgKyByZXN1bHRhZG8pOwogICAgfQogICAgCiAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGdW5jaW9uUmVzdGFyKGludCBuMSwgaW50IG4yKXsKICAgICAgICBpbnQgcmVzdGEsIHJlc3VsdGFkbzsKICAgICAgICBpZiggbjEgPiBuMil7CiAgICAgICAgICAgIHJlc3RhID0gbjEgLSBuMjsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgcmVzdGEgPSBuMi1uMTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0YWRvID0gZGVjaW1hbDJCaW5hcmlvKHJlc3RhKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVsIHJlc3VsdGFkbyBlczogIiArIHJlc3VsdGFkbyk7CiAgICAgICAgCiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBGdW5jaW9uTXVsdGlwbGljYXIoaW50IG4xLCBpbnQgbjIpIHsKICAgICAgICBpbnQgbXVsdGkscmVzdWx0YWRvOwogICAgICAgIG11bHRpPSBuMSpuMjsKICAgICAgICByZXN1bHRhZG8gPSBkZWNpbWFsMkJpbmFyaW8obXVsdGkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRWwgcmVzdWx0YWRvIGVzOiAiICsgcmVzdWx0YWRvKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIEZ1bmNpb25EaXZpZGlyKGludCBuMSwgaW50IG4yKXsKICAgICAgICBpbnQgZGl2LHJlc3VsdGFkbzsKICAgICAgICBpZihuMT5uMil7CiAgICAgICAgICAgIGRpdiA9IG4xL24yOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBkaXYgPSBuMi9uMTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0YWRvID0gZGVjaW1hbDJCaW5hcmlvKGRpdik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbCByZXN1bHRhZG8gZXM6ICIgKyByZXN1bHRhZG8pOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGludCBiaW5hcmlvMkRlY2ltYWwgKGludCBiaW5hcmlvKXsKICAgICAgICBpbnQgZmFjdG9yID0gMSwgZGVjaW1hbCA9IDAsZDsKICAgICAgICB3aGlsZShiaW5hcmlvID4gMCl7CiAgICAgICAgICAgIGQ9IGJpbmFyaW8lMTA7CiAgICAgICAgICAgIGJpbmFyaW8gPSBiaW5hcmlvLzEwOwogICAgICAgICAgICBkZWNpbWFsID0gZGVjaW1hbCArIGZhY3RvcipkOwogICAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IgKiAyOwogICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgIHJldHVybiBkZWNpbWFsOwogICAgICAgIAogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGludCBkZWNpbWFsMkJpbmFyaW8gKGludCBkZWNpbWFsKXsKICAgICAgICBpbnQgZmFjdG9yID0gMSwgYmluYXJpbyA9IDAsZDsKICAgICAgICB3aGlsZShkZWNpbWFsID4gMCl7CiAgICAgICAgICAgIGQ9IGRlY2ltYWwlMjsKICAgICAgICAgICAgZGVjaW1hbCA9IGRlY2ltYWwgLzI7CiAgICAgICAgICAgIGJpbmFyaW8gPSBiaW5hcmlvICsgZmFjdG9yICogZDsKICAgICAgICAgICAgZmFjdG9yID0gZmFjdG9yICogMTAgOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYmluYXJpbzsKICAgICAgICAKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBib29sZWFuIHZhbGlkYXJCaW5hcmlvKFN0cmluZyB2YWxpZGFkb3IpewogICAgICAgIGJvb2xlYW4gYXV4ID0gdHJ1ZTsKICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPCB2YWxpZGFkb3IubGVuZ3RoKCkgOyBpKyspIHsKICAgICAgICAgICAgY2hhciBjID0gdmFsaWRhZG9yLmNoYXJBdChpKTsKICAgICAgICAgICAgaWYoYyA9PSAnMCcgfHwgYyA9PSAnMScpewoKICAgICAgICAgICAgfWVsc2UKICAgICAgICAgICAgICAgIGF1eCA9IGZhbHNlOwogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgaWYoYXV4KQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQ==