{
int[] vec;
public Vector(int dim)
{
try
{
if (dim > 0)
vec = new int[dim];
else
vec = new int[5];
}
catch (FormatException ex)
{
Console.Write("Solo se aceptan numeros enteros positivos" + ex);
}
}
public int Mayor()
{
int mayor = vec[0];
//Inicializamos la variable i en 1 porque ya tenemos el dato en la posicion 0
for (int i = 1; i < vec.Length; i++)
if (mayor < vec[i])
mayor = vec[i];
return mayor;
}
public int Menor()
{
int menor = vec[0];
for (int i = 0; i < vec.Length; i++)
if (menor > vec[i])
menor = vec[i];
return menor;
}
public void Insertar()
{
Random ran = new Random();
for (int i = 0; i < vec.Length; i++)
vec[i] = ran.Next(1000, 10001);
}
public void Asignar(int val, int pos)
{
if (pos >= 0 && pos < vec.Length)
vec[pos] = val;
}
public int Leer(int pos)
{
return vec[pos];
}
//El uso del indexador suple los 2 metodos anteriores
public int this[int pos]
{
get { return vec[pos]; }
set { vec[pos] = value; }
}
public int Tamaño
{
get { return vec.Length; }
}
public void Leer()
{
for (int i = 0; i < vec.Length; i++)
Console.WriteLine(vec[i]);
}
}
//------------------------------------------------------------------------------------
class Matriz
{
int[,] mat;
int ren, col;
//Constructor
public Matriz(int r, int c)
{
ren = r;
col = c;
mat = new int[r, c];
}
public Matriz(DataGridView dg)
{
ren = dg.RowCount;
col = dg.ColumnCount;
mat = new int[ren, col];
for (int i = 0; i < dg.RowCount; i++)
for (int j = 0; j < dg.ColumnCount; j++)
mat[i, j] = Convert.ToInt32(dg.Rows[i].Cells[j].Value.ToString());
}
//Indexador
public int this[int r, int c]
{
get { return mat[r, c]; }
set { mat[r, c] = value; }
}
//Metodos
public double DiagonalPrinc()//int[,] m)
{
if (ren != col)
return 0.0;
double promedio = 0.0;
for (int r = 0; r < mat.GetLength(0); r++)
for (int c = 0; c < mat.GetLength(1); c++)
if (r == c)
promedio += mat[r, c];
return promedio / mat.GetLength(0);
}
public double DiagonalInv()//int[,] m)
{
if (ren != col)
return 0.0;
double prom = 0.0;
int _col = col - 1;
for (int i = 0; i < ren; i++)
prom += mat[i, _col--];
return prom / col;
}
//Propiedades
public int Renglones
{
get { return mat.GetLength(0); }
}
public int Columnas
{
get { return mat.GetLength(1); }
}
//Multiplicar matrices
static public Matriz operator *(Matriz a, Matriz b)
{
Matriz aux = new Matriz(a.ren, b.col);
for (int i = 0; i < a.ren; i++)
{
for (int j = 0; j < aux.col; j++)
{
aux[i, j] = 0;
for (int k = 0; k < aux.ren; k++)
aux[i, j] = aux[i, j] + a[i, k] * b[k, j];
}
}
return aux;
}
}
//--------------------------------------------------------------------
public partial class Form1 : Form
{
Matriz mat = new Matriz(5, 4);
Vector vec;
int[,] m = { { 194, 48, 206, 45 },
{ 180, 20, 310, 15 },
{88, 301, 90, 25},
{ 403, 70, 77, 32 },
{ 201, 88, 23, 55 }};
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dgv1.RowCount = 5;
dgv1.ColumnCount = 5;
dgv2.RowCount = 1;
dgv2.ColumnCount = 5;
dgv3.RowCount = 1;
dgv3.ColumnCount = 4;
dgv1.Columns[0].HeaderCell.Value = "Distrito";
dgv1.Columns[1].HeaderCell.Value = "Candidato A";
dgv1.Columns[2].HeaderCell.Value = "Candidato B";
dgv1.Columns[3].HeaderCell.Value = "Candidato C";
dgv1.Columns[4].HeaderCell.Value = "Candidato D";
dgv2.Rows[0].HeaderCell.Value = "Votos";
dgv2.Columns[0].HeaderCell.Value = "Candidato A";
dgv2.Columns[1].HeaderCell.Value = "Candidato B";
dgv2.Columns[2].HeaderCell.Value = "Candidato C";
dgv2.Columns[3].HeaderCell.Value = "Candidato D";
dgv2.Columns[4].HeaderCell.Value = "Total de votos";
dgv3.Rows[0].HeaderCell.Value = "%";
dgv3.Columns[0].HeaderCell.Value = "Candidato A";
dgv3.Columns[1].HeaderCell.Value = "Candidato B";
dgv3.Columns[2].HeaderCell.Value = "Candidato C";
dgv3.Columns[3].HeaderCell.Value = "Candidato D";
for (int i = 0; i < 5; i++)
for (int j = 0; j < m.GetLength(1); j++)
{
mat[i, j] = m[i, j];
dgv1[0, i].Value = (i + 1).ToString();
dgv1[j + 1, i].Value = mat[i, j];
}
}
private void button1_Click(object sender, EventArgs e)
{
int aux = 0;
vec = new Vector(4);
for (int i = 0; i < vec.Tamaño; i++)
{
for (int j = 0; j < mat.Renglones; j++)
{
vec[i] += mat[j, i];
}
aux += vec[i];
dgv2[i, 0].Value = vec[i];
dgv2[4, 0].Value = aux;
}
double[] vector = new double[4];
for (int i = 0; i < dgv3.ColumnCount; i++)
{
vector[i] = ((double)vec[i] / aux) * 100;
dgv3[i, 0].Value = vector[i];
}
if (vector[0] >= 50)
MessageBox.Show("Ganador: Candidato A");
else
if (vector[1] >= 50)
MessageBox.Show("Ganador: Candidato B");
else
if (vector[2] >= 50)
MessageBox.Show("Ganador: Candidato C");
else
if (vector[3] >= 50)
MessageBox.Show("Ganador: Candidato D");
else
MessageBox.Show("No hay ganador");
}
}
}
No hay comentarios:
Publicar un comentario