domingo, 21 de agosto de 2016

Matriz en C#

Hola ahora haremos una aplicaciĆ³n que lea los contenidos de una matriz de n filas y columnas y calcule e imprima lo siguiente:
-La suma de cada columnas y filas
-La suma de todos los elementos contenidos

Con los numericUpDown  vamos a seleccionar el numero de columnas y renglones una vez hecho eso vamos a introducir nuestros datos desde el dataGridView

Aqui una imagen de ejemplo como ven en el mismo dataGridView mostramos los resultados:

Ejemplo
Aqui el cĆ³digo de la aplicaciĆ³n.
namespace Matriz
{
    public partial class Form1 : Form
    {
        private int[,] matriz;
        private int ren, col;
        public Form1()
        {
            InitializeComponent();
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            dataGridView1.RowCount = Convert.ToInt32(numericUpDown1.Value);
        }

        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            dataGridView1.ColumnCount = Convert.ToInt32(numericUpDown2.Value);
            dataGridView1.Columns[(int)numericUpDown2.Value - 1].Width = 115;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            ren = dataGridView1.RowCount;
            col = dataGridView1.ColumnCount;
            matriz = new int[ren, col];

            //Leer Datos
            for (int i = 0; i < ren; i++)
                for (int j = 0; j < col; j++)
                    matriz[i, j] = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString());


            //Calcular datos
            if (ren == col)
            {
                //Agregamos una fila y columna para mostrar los calculos en el mismo dataGriView
                double total = Total();
                dataGridView1.Rows.Add();
                SumaColumnas();
                dataGridView1.Columns.Add("", "");
                SumaRenglones();
                dataGridView1[dataGridView1.ColumnCount - 1, dataGridView1.RowCount - 1].Value = "Suma total: " + total.ToString();
                dataGridView1.Columns[dataGridView1.ColumnCount - 1].Width = 115;
            }
            else 
            {
                MessageBox.Show("Para calcular los datos debe contener el mismo numero de renglones y columnas");
            }
        }

        public double Total() 
        {
            double suma = 0;

            for (int i = 0; i < ren ; i++)
            {
                for (int j = 0; j < col; j++)
                {
                    suma += matriz[j, i];
                }            
            } 
            return suma;
         
        }

        public void SumaColumnas()
        {
            double suma = 0;
           
            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount ; j++)
                {
                    suma += matriz[j, i];               
                }
                
                dataGridView1[i, dataGridView1.RowCount -1 ].Value = "Suma Columna " + (i+1) + ": " +suma;
                suma = 0;

            }
        }

        public void SumaRenglones()
        {
            double suma = 0;

            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count  - 1 ; j++)
                {
                    suma += matriz[i, j];
                }

                dataGridView1[dataGridView1.RowCount - 1, i].Value = "Total Fila " + (i + 1) + ": " + suma;
                suma = 0;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.RowCount = 0;
            dataGridView1.ColumnCount = 0;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            ren = dataGridView1.RowCount;
            col = dataGridView1.ColumnCount;
            matriz = new int[ren, col];

            for (int i = 0; i < ren; i++)
                for (int j = 0; j < col; j++)
                {
                    matriz[i, j] = random.Next(1, 10);
                    dataGridView1[i, j].Value = matriz[i, j];
                }
        }
    }
}

DEJAR COMENTARIOS!! SUSCRIBIRSE!!!

No hay comentarios:

Publicar un comentario