Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.44 KB | None | 0 0
  1. public class Tarea {
  2.     public static void main (String[]args){
  3.         int[] a = {1,2,3}; //Dos numeros previamente leidos
  4.         int[] b = {1,7};
  5.         int[] c = sumar(a,b); //Se llama la funcion y guarda en el arreglo
  6.        
  7.         for (int i=0;i<c.length;i++){
  8.             if(i==0 && c[i]==0){ //Si la posicion c[i] es la primera y es igual a 0 no imprime nada ya que 041 es 41
  9.             }else{
  10.                 System.out.print(c[i]); //Imprime el resto de valores
  11.             }
  12.         }
  13.     }
  14.     public static int[] sumar(int[]a,int[]b){ //Se procede a usar la funcion
  15.         int []retornar; //Este arreglo se va a retornar, por eso se llama retornar
  16.         int lengthmayor; //Esta variable guarda el tamaño del mayor
  17.         if (a.length>b.length){ //Crea el arreglo segun el mayor+1, pues en caso de 99+1 puede llegar a 100 y necesitaria un espacio mas
  18.             retornar = new int[a.length+1];
  19.             lengthmayor=a.length;
  20.         }else{
  21.             retornar = new int[b.length+1];
  22.             lengthmayor=b.length;
  23.         }
  24.         int posa = a.length-1; //Guarda las posiciones finales, pues la suma se hace de derecha a izquierda
  25.         int posb= b.length-1;
  26.         int sum; //Esta variable suma
  27.         for(int i = lengthmayor;i>=0;i--){ //For recorrido inverso, desde el largo del arreglo mayor hasta 0
  28.             if(posa<0&&posb<0){ //Si pasa a negativo las dos posiciones, la suma va a ser 0, pues no quedan mas valores
  29.                 sum=0;
  30.             }else if(posa<0){ //En otros casos especiales la suma es igual al valor del otro arreglo que si le quedan datos
  31.                 sum=b[posb];
  32.             }else if (posb<0){
  33.                 sum=a[posa];
  34.             }else{ //Este else indica que pasaron los casos especiales y se realiza el caso normal que es la suma de las posiciones de mas a la derecha
  35.                 //Hasta mas a la izquierda
  36.             sum = (a[posa]+b[posb]);
  37.             }
  38.            
  39.             //Borre un pedazo de codigo que estaba ocupando espacio de mas jajaja perdon, era mi idea principal y no hacia nada
  40.            
  41.                 retornar[i]=retornar[i]+sum; //Se realiza la suma con acumulador por si tiene alguna sobra
  42.                
  43.             if (retornar[i]>=10){ //Si la suma es mayor a 10 se adelanta a la posicion anterior, guarda el valor dividido en 10
  44.                 retornar[i-1]=retornar[i-1]+(retornar[i]/10); //Al ser int se trunca y solo guarda la porcion entera, 12/10 = 1
  45.                 retornar[i]=(retornar[i] % 10); //El resto de la division se guarda en la posicion actual (12 mod 10 = 2)
  46.             }
  47.             posa--; //Se restan 1 a las posiciones, debido a que pueden ser entregadas de distintos tamaños
  48.             posb--;
  49.         } //Fin for
  50.        
  51.         return retornar; //Regresa el arreglo sumado
  52.        
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement