Código Java – Redimensionar Matrices sin Borrar Registros con Redim Preserve


Este es el Ejemplo #21 del Topic: Programación Gráfica en Java.

Este será un post corto. Muchas veces mientras programamos hemos tenido la necesidad de re-dimensionar las matrices que ya hemos declarado sin perder los datos que ya tengamos registrados en ella, pues esto es tarea sencilla en otros lenguajes de programación pero no quiere decir que en java no lo sea. El siguiente procedimiento se encargará de ello. Lo que hará es recibir una matriz y un entero indicando el nuevo tamaño de la matriz y lo redimencionará automáticamente:

...
    public void redimPreserve(Object obj[],int i)
    {
        if(i>obj.length)
        {
            Object[] tempVar = new Object[i];
            if (obj != null)
                    System.arraycopy(obj, 0, tempVar, 0, Math.min(obj.length, tempVar.length));
            obj = tempVar;
        }
    }
...

Código de Ejemplo:

package beastieux.gui;

import javax.swing.JOptionPane;

/**
 *
 * @author beastieux
 */
public class Ejm21_RedimPreserve {

    public void redimPreserve(Object obj[],int i)
    {
        if(i>obj.length)
        {
            Object[] tempVar = new Object[i];
            if (obj != null)
                    System.arraycopy(obj, 0, tempVar, 0, Math.min(obj.length, tempVar.length));
            obj = tempVar;
        }
    }

    public static void main(String args[])
    {
        Ejm21_RedimPreserve obj = new Ejm21_RedimPreserve();

        String []a_num;

        a_num = new String[] {"1","2","3"};
        for(int i=0;i<a_num.length;i++)
            JOptionPane.showMessageDialog(null, a_num[i]);

        obj.redimPreserve(a_num,5);

        JOptionPane.showMessageDialog(null, "Después del redim preserve");

        a_num = new String[] {"1","2","3","4","5"};

        for(int i=0;i<a_num.length;i++)
            JOptionPane.showMessageDialog(null, a_num[i]);
    }
}
Anuncios

Código Java – Ejemplo de Matriz


//Codificado por sAfOrAs
public class Matriz
{
	static int MAX=100;
	static int a1[]=new int[MAX];
	static void rellenaraleatorios(int x[])
	{
		for(int i=0;i<x.length;i++)		
		{
			x[i]=(int)(Math.random()*100+1);
		}
	}
	
	static void imprimir(int x[])
	{
		for(int i=0;i<x.length;i++)
		{
			
			
			if(i%10==0)
				System.out.print(" \n ");
			
			System.out.print("  "+(i+1));
		}
	}

	//static void muestre(int y[])
	//{
//		System.out.print()
//	}

	public static void main(String[] args)
	{
		rellenaraleatorios(a1);
		imprimir(a1);
	}
}

Código C++ – Ejemplo de Matrices


//Codificado por sAfOrAs
//Muestra la suma de filas y columnas de una matriz de 5x5
??=include<iostream>
??=include<iomanip>
using namespace std;
int main()
??<
	int n[5][5],i=0,j=0,k=0, sum=0, sumf=0,sumc=0;
	cout<<"\t\t\tMuestra la suma de filas y columnas\n";	
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			k++;
			cout<<"Ingrese el valor "<<k<<" :";
			cin>>n[i][j];
			
		}
		
	}
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
		cout<<setw(3)<<n[i][j]<<"  ";
		sumf=sumf+n[i][j];
		sum=sumf;
		}
		sumf=0;
		//setw(3)<<setfill('<caracter para completar> ') son controlados por la libreria iomanip
		//cambian la anchura de caracteres y setfill se usa si la anchura 
		//especificada sea mayor de la necesaria
		
		cout<<"= "<<sum;cout<<endl;
	}
		cout<<setw(3)<<" -----------------------"<<"  "<<endl;
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
		{
			sumc=sumc+n[j][i];
			sum=sumc;
		}
		sumc=0;
		
		cout<<setw(3)<<sum<<"  ";
	}
	cout<<endl<<endl;


	cin.ignore(); return 0;
	
??>