Guest User

Untitled

a guest
Oct 16th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.99 KB | None | 0 0
  1. package Trabajo;
  2.  
  3. import javax.swing.JOptionPane;
  4. //Main
  5. public class Proyecto {
  6. /**
  7. * Metodo inicial.
  8. */
  9. public static void main(String[] args) {
  10. int operacion = Integer.parseInt(JOptionPane.showInputDialog("Ingrese una opcion \n"
  11. + "1-Conversion \n"
  12. + "2-Suma \n"
  13. + "3-Resta \n"
  14. + "4-Multiplicacion"));
  15.  
  16. menuInicio(operacion);
  17. }
  18.  
  19. /**
  20. * Metodo para sumar resta o multiplicar.
  21. * @param operacion Codigo es de la opreacion
  22. * * @Autor Diego Fernando Echverry
  23. */
  24. public static void menuInicio(int operacion) {
  25.  
  26. if (operacion >= 1 && operacion <= 4) {
  27.  
  28. switch (operacion) {
  29. // Conversion
  30. case 1:
  31. int baseOrigen = menuBase(-1);
  32. String numeroIngresado = ingresarNumero();
  33. if(!validarNumeroBase(numeroIngresado, baseOrigen)){
  34. JOptionPane.showMessageDialog(null, "El numero no es válido para la base dada.",
  35. "Error!", JOptionPane.ERROR_MESSAGE);
  36. }
  37. else{
  38. int baseDestino = menuBase(baseOrigen);
  39.  
  40. System.out.println(convertirNumeroBase(baseOrigen, baseDestino, numeroIngresado));
  41. }
  42. break;
  43.  
  44. // Suma
  45. case 2:
  46. int baseOperacion = menuBase(-1);
  47. String[] datosOperacion = ingresarDatosOperacion();
  48.  
  49. System.out.println(sumar(datosOperacion[0], datosOperacion[1], baseOperacion));
  50. break;
  51. // Resta
  52. case 3:
  53. break;
  54.  
  55. // Multiplicacion
  56. case 4:
  57. break;
  58. }
  59. }
  60. else {
  61. JOptionPane.showMessageDialog(null, "Rango Invalido",
  62. "Error!", JOptionPane.ERROR_MESSAGE);
  63. }
  64. }
  65.  
  66. private static boolean validarNumeroBase(String numeroIngresado, int baseOrigen) {
  67. boolean esValido = true;
  68. switch (baseOrigen) {
  69. // Binario
  70. case 1:
  71. esValido = validarBinario(numeroIngresado);
  72. break;
  73. // Octal
  74. case 2:
  75. break;
  76.  
  77. // Decimal
  78. case 3:
  79. break;
  80.  
  81. // Hexadecimal
  82. case 4:
  83. break;
  84. }
  85.  
  86. return esValido;
  87. }
  88.  
  89. private static boolean validarBinario(String numeroIngresado) {
  90. return true;
  91. }
  92.  
  93. private static String sumar(String primerOperando, String segundoOperando, int baseOperacion) {
  94.  
  95. String retorno = "";
  96.  
  97. switch (baseOperacion) {
  98. // Binario
  99. case 1:
  100. retorno = sumarBinarios(primerOperando, segundoOperando);
  101. break;
  102.  
  103. // Octal
  104. case 2:
  105. break;
  106.  
  107. // Decimal
  108. case 3:
  109. break;
  110.  
  111. // Hexadecimal
  112. case 4:
  113. break;
  114. }
  115.  
  116. return retorno;
  117. }
  118.  
  119. private static String sumarBinarios(String primerOperando,
  120. String segundoOperando) {
  121. int primerBinario = Integer.parseInt(primerOperando, 2);
  122. int segundoBinario = Integer.parseInt(segundoOperando, 2);
  123.  
  124. int resultado = primerBinario + segundoBinario;
  125. return Integer.toBinaryString(resultado);
  126. }
  127.  
  128. public static String[] ingresarDatosOperacion(){
  129. String primerDato = JOptionPane.showInputDialog("A");
  130. String segundoDato = JOptionPane.showInputDialog("B");
  131.  
  132. return new String[]{primerDato, segundoDato};
  133. }
  134.  
  135. /**
  136. * Metodo que convierte un numero de una base a otra.
  137. * @param baseOrigen Base en la que esta escrito el numero que se desea convertir.
  138. * @param baseDestino Base a la que se desea convertir el metodo.
  139. * @param numeroIngresado Numero que se desea convertir.
  140. * @return El numero convertido a la base destino.
  141. */
  142. public static String convertirNumeroBase(int baseOrigen, int baseDestino,
  143. String numeroIngresado) {
  144.  
  145. String retorno = "";
  146.  
  147. switch (baseOrigen) {
  148. // Binario
  149. case 1:
  150.  
  151. switch (baseDestino) {
  152. // Octal
  153. case 2:
  154. retorno = convertirBinarioAOctal(numeroIngresado);
  155. break;
  156.  
  157. // Decimal
  158. case 3:
  159. break;
  160.  
  161. // Hexadecimal
  162. case 4:
  163. break;
  164. }
  165.  
  166. break;
  167.  
  168. // Octal
  169. case 2:
  170. break;
  171.  
  172. // Decimal
  173. case 3:
  174. break;
  175.  
  176. // Hexadecimal
  177. case 4:
  178. break;
  179. }
  180.  
  181. System.out.println("baseOrigen " + baseOrigen + " baseDestino " + baseDestino + " numeroIngresado " + numeroIngresado);
  182. return retorno;
  183. }
  184.  
  185. /**
  186. * Pasa un numero de binario a octal.
  187. * @param numeroIngresado Numero a convertir
  188. * @return Numero convertido.
  189. */
  190. public static String convertirBinarioAOctal(String numeroIngresado) {
  191. int numeroBinario = Integer.parseInt(numeroIngresado, 2);
  192. return Integer.toOctalString(numeroBinario);
  193. }
  194. /**
  195. Pasa un numero de decimal a hexadecimal.
  196. * @param numeroIngresado Numero a convertir
  197. *
  198. */
  199. public static String decimalAhexadecimal(int entrada) {
  200. String digits = "0123456789ABCDEF";
  201. if (entrada == 0);
  202. String hexadecimal = "";
  203. while (entrada > 0) {
  204. int mod = entrada % 16; // Dígito de la derecha
  205. hexadecimal = digits.charAt(mod) + hexadecimal; // Concatenación de cadenas
  206. entrada = entrada / 16;
  207. }
  208. return hexadecimal;
  209.  
  210. }
  211. /**
  212. *
  213. * Pasa un numero de decimal a Octal.
  214. * @param numeroIngresado Numero a convertir
  215. */
  216. public static String decimalAoctal(int inicio) {
  217. String acomular = "";
  218. if (inicio <= 8) {
  219. acomular += inicio;
  220. } else {
  221.  
  222. int div1 = inicio / 8;
  223. int div2 = div1 / 8;
  224. int div3 = div2 / 8;
  225. int div4 = div3 / 8;
  226. int div5 = div4 / 8;
  227. int div6 = div5 / 8;
  228. int div7 = div6 / 8;
  229. int div8 = div7 / 8;
  230. int div9 = div8 / 8;
  231. int[] arreglo = new int[10];
  232. arreglo[0] = inicio % 8;
  233. arreglo[1] = div1 % 8;
  234. arreglo[2] = div2 % 8;
  235. arreglo[3] = div3 % 8;
  236. arreglo[4] = div4 % 8;
  237. arreglo[5] = div5 % 8;
  238. arreglo[6] = div6 % 8;
  239. arreglo[7] = div7 % 8;
  240. arreglo[8] = div8 % 8;
  241. arreglo[9] = div9 % 8;
  242. for (int i = arreglo.length - 1; i >= 0; i--) {
  243. if (arreglo[i] != 0) {
  244. acomular += arreglo[i];
  245. }
  246. }
  247.  
  248. }
  249. return acomular;
  250. }
  251. /**
  252. *
  253. * Pasa un numero de decimal a Binario.
  254. * @param numeroIngresado Numero a convertir
  255. */
  256. public static String decimalABinario(int decimal) {
  257.  
  258. String binario = "";
  259. while (decimal > 0) {
  260. binario = decimal % 2 + binario;
  261. decimal /= 2;
  262. }
  263. return binario;
  264. }
  265. /**
  266. *
  267. * Pasa un numero de hexadecimal A Decimal.
  268. * @param numeroIngresado Numero a convertir
  269. */
  270. public static int hexadecimalADecimal(String s) {
  271. String digitos = "0123456789ABCDEF";
  272. s = s.toUpperCase();
  273. int decimal = 0;
  274. for (int i = 0; i < s.length(); i++) {
  275. char c = s.charAt(i);
  276. int d = digitos.indexOf(c);
  277. decimal = 16*decimal + d;
  278. }
  279. return decimal;
  280. }
  281. /**
  282. * Pasa un numero de Octal A Decimal.
  283. * @param numeroIngresado Numero a convertir
  284. */
  285. public static void octalADecimal(String base) {
  286. String cadenaInver = "";
  287. int b = 0;
  288. int c = 0;
  289. for (int i = base.length()-1; i >= 0; i--) {
  290. cadenaInver += ""+base.charAt(i);
  291. }
  292. for (int i = 0; i < cadenaInver.length(); i++) {
  293. String convertir = "" + cadenaInver.charAt(i);
  294. b = Integer.parseInt(convertir);
  295. c += (b * Math.pow(8, i));
  296. }
  297. System.out.println(c);
  298. }
  299. /**
  300. * Pasa un numero de Binario A Decimal.
  301. * @param numeroIngresado Numero a convertir
  302. */
  303. public static int binarioADecimal(String base) {
  304. String cadenaInver = "";
  305. int b = 0;
  306. int c = 0;
  307. for (int i = base.length()-1; i >= 0; i--) {
  308. cadenaInver += ""+base.charAt(i);
  309. }
  310. double[] arreglo;
  311. for (int i = 0; i <= cadenaInver.length(); i++) {
  312. arreglo = new double[99];
  313. arreglo[i] = (Math.pow(2, i));
  314.  
  315. for (int m = 0; m < cadenaInver.length(); m++) {
  316. String convertir = "" + cadenaInver.charAt(m);
  317. b = Integer.parseInt(convertir);
  318. c += b * arreglo[m];
  319. }
  320. }
  321. return c;
  322. }
  323.  
  324.  
  325. /**
  326. * Menu para seleccionar base en la operación de conversión.
  327. * @param seleccionado Numero seleccionado anteriormente, si se le pasa un -1 se
  328. * mostre todas las opciones.
  329. *
  330. * @return La base seleccionada por el usuario.
  331. */
  332. public static int menuBase(int seleccionado){
  333.  
  334. int baseSeleccionada = -1;
  335. if(seleccionado == -1){
  336. // 1 binario, 2 octal, 3 decimal, 4 hexadecimal.
  337.  
  338. baseSeleccionada = Integer.parseInt(
  339. JOptionPane.showInputDialog("Ingrese una Base \n"
  340. + "1 - Binario \n"
  341. + "2 - Octal \n"
  342. + "3 - Decimal \n"
  343. + "4 - Hexadecimal"));
  344. }
  345. else{
  346.  
  347. String opcionBinario = "1 - Binario \n";
  348. String opcionOctal = "2 - Octal \n";
  349. String opcionDecimal = "3 - Decimal \n";
  350. String opcionHexadecimal = "4 - Hexadecimal";
  351.  
  352. String opcionesSeleccionables = "";
  353.  
  354. if(seleccionado != 1) opcionesSeleccionables += opcionBinario;
  355. if(seleccionado != 2) opcionesSeleccionables += opcionOctal;
  356. if(seleccionado != 3) opcionesSeleccionables += opcionDecimal;
  357. if(seleccionado != 4) opcionesSeleccionables += opcionHexadecimal;
  358.  
  359. baseSeleccionada = Integer.parseInt(JOptionPane.showInputDialog("Ingrese una Base \n"
  360. + opcionesSeleccionables));
  361. }
  362.  
  363. if(baseSeleccionada <= 0 || baseSeleccionada > 4){
  364. JOptionPane.showMessageDialog(null, "Rango Invalido",
  365. "Error!", JOptionPane.ERROR_MESSAGE);
  366. }
  367.  
  368. return baseSeleccionada;
  369. }
  370.  
  371. public static String ingresarNumero(){
  372. return JOptionPane.showInputDialog("Ingrese el numero en la base origen");
  373. }
  374.  
  375. }
Add Comment
Please, Sign In to add comment