domingo, 23 de octubre de 2011

calculo de promedios diagonal en consola

class Program
{
public int Menu()
{

Console.Clear();
Console.WriteLine("Matriz Cuadrada");
Console.WriteLine("1)Promedio Diagonal Principal");
Console.WriteLine("2)Promedio Diagonal Invertida");
Console.WriteLine("3)Salir..");
int resp = Convert.ToInt16(Console.ReadLine());
return resp;
}
static public double promPrincipal(int[,] x)
{
double suma = 0;
double Prom = 0;
double cont = 0;
for(int r = 0; r < x.GetLength(0); r++)
for (int c = 0; c < x.GetLength(1); c++)
{
if (r == c)
{
suma += x[r,c];
cont++;
}
}
Prom = suma / cont;
return Prom;
}
static public double promInversa(int[,] x, int n)
{
double suma = 0;
double Prom = 0;
double cont = 0;
for(int r = 0; r < x.GetLength(0); r++)
for (int c = 0; c < x.GetLength(1); c++)
{
if ((r+c) == (n-1))
{
suma += x[r,c];
cont++;
}
}
Prom = suma / cont;
return Prom;
}
static void Main(string[] args)
{
int r;
int c;
int n;
Program prog = new Program();
do
{
n = prog.Menu();
switch (n)
{
case 1:
{
do
{

Console.WriteLine("Numero de del Tamaño de la matiz cuadrada (Numero de 2 - 10) ");
r = c = Convert.ToInt16(Console.ReadLine());
if (r < 2 || r > 10)
{
Console.WriteLine("Solo numero entre 2 y 10");
Console.Clear();
}

}
while (r < 2 || r > 10);
int x = 10; int y = 10;

Random alt = new Random();
int[,] mat = new int [r,c];
int alto = y + mat.GetLength(0);
for(r =0; r < mat.GetLength(0); r++ )
for (c = 0; c < mat.GetLength(1); c++)
{
mat[r, c] = alt.Next(1,10);
Console.SetCursorPosition(x, y);
Console.Write(mat[r,c]);
y++;
if (y >= alto)
{
x += 5;
y = 10;
}

}

Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Promedio diagonal principal : ");
Console.WriteLine(promPrincipal(mat));
Console.WriteLine("Enter para ir a Menu.........");
Console.ReadKey();
}
break;
case 2:
{
do
{

Console.WriteLine("Numero de del Tamaño de la matiz cuadrada (Numero de 2 - 10) ");
r = c = Convert.ToInt16(Console.ReadLine());
if (r < 2 || r > 10)
{
Console.WriteLine("Solo numero entre 2 y 10");
Console.Clear();
}

}
while (r < 2 || r > 10);
int x = 10; int y = 10;

Random alt = new Random();
int[,] mat = new int[r, c];
int alto = y + mat.GetLength(0);
for (r = 0; r < mat.GetLength(0); r++)
for (c = 0; c < mat.GetLength(1); c++)
{
mat[r, c] = alt.Next(1, 10);
Console.SetCursorPosition(x, y);
Console.Write(mat[r, c]);
y++;
if (y >= alto)
{
x += 5;
y = 10;
}

}

Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Promedio diagonal inversa : ");
Console.WriteLine(promInversa(mat, c));
Console.WriteLine("Enter para ir a Menu.........");
Console.ReadKey();
}
break;
case 3: Console.WriteLine();
break;


}
}
while(n < 3);
}
}
}

No hay comentarios:

Publicar un comentario