Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Tarea {
- public static void main (String[]args){
- int[] a = {1,2,3}; //Dos numeros previamente leidos
- int[] b = {1,7};
- int[] c = sumar(a,b); //Se llama la funcion y guarda en el arreglo
- for (int i=0;i<c.length;i++){
- 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
- }else{
- System.out.print(c[i]); //Imprime el resto de valores
- }
- }
- }
- public static int[] sumar(int[]a,int[]b){ //Se procede a usar la funcion
- int []retornar; //Este arreglo se va a retornar, por eso se llama retornar
- int lengthmayor; //Esta variable guarda el tamaño del mayor
- 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
- retornar = new int[a.length+1];
- lengthmayor=a.length;
- }else{
- retornar = new int[b.length+1];
- lengthmayor=b.length;
- }
- int posa = a.length-1; //Guarda las posiciones finales, pues la suma se hace de derecha a izquierda
- int posb= b.length-1;
- int sum; //Esta variable suma
- for(int i = lengthmayor;i>=0;i--){ //For recorrido inverso, desde el largo del arreglo mayor hasta 0
- if(posa<0&&posb<0){ //Si pasa a negativo las dos posiciones, la suma va a ser 0, pues no quedan mas valores
- sum=0;
- }else if(posa<0){ //En otros casos especiales la suma es igual al valor del otro arreglo que si le quedan datos
- sum=b[posb];
- }else if (posb<0){
- sum=a[posa];
- }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
- //Hasta mas a la izquierda
- sum = (a[posa]+b[posb]);
- }
- //Borre un pedazo de codigo que estaba ocupando espacio de mas jajaja perdon, era mi idea principal y no hacia nada
- retornar[i]=retornar[i]+sum; //Se realiza la suma con acumulador por si tiene alguna sobra
- if (retornar[i]>=10){ //Si la suma es mayor a 10 se adelanta a la posicion anterior, guarda el valor dividido en 10
- retornar[i-1]=retornar[i-1]+(retornar[i]/10); //Al ser int se trunca y solo guarda la porcion entera, 12/10 = 1
- retornar[i]=(retornar[i] % 10); //El resto de la division se guarda en la posicion actual (12 mod 10 = 2)
- }
- posa--; //Se restan 1 a las posiciones, debido a que pueden ser entregadas de distintos tamaños
- posb--;
- } //Fin for
- return retornar; //Regresa el arreglo sumado
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement