lunes, 23 de marzo de 2009

Soluciones propuestas a evaluación 2, grupo 21

Hacer una aplicación que forme un vector del que no se sabe el número de elementos (el tamaño y los datos los indica el usuario). Calcule el promedio de todos los elementos e imprima dos nuevos arreglos, uno con los elementos menores o iguales al promedio y otro con los superiores.


int[] a;
int tamaño, posicion = 0, suma = 0,promedio;

private void btnTamaño_Click(object sender, EventArgs e)
{
tamaño = Convert.ToInt32(txtTamaño.Text);
a = new int[tamaño];
grpCrear.Enabled = false;
grpLlenar.Enabled = true;
}

private void btnLlenar_Click(object sender, EventArgs e)
{
if (posicion < tamaño)
{
a[posicion] = Convert.ToInt32(txtLlenar.Text);
suma += a[posicion];
txtLlenar.Clear();
txtLlenar.Focus();
posicion++;
}
if (posicion == tamaño)
{
grpLlenar.Enabled = false;
grpResultado.Enabled = true;
}
}

private void btnResultado_Click(object sender, EventArgs e)
{
promedio=suma/tamaño;
txtPromedio.Text = promedio.ToString();
for (posicion = 0; posicion < tamaño; posicion++)
{
lblVector.Text += a[posicion].ToString() + " ";
if (a[posicion] <= promedio)
{
lblMenores.Text += a[posicion].ToString() + " ";
}
else {
lblMayores.Text += a[posicion].ToString() + " ";
}
}
grpResultado.Enabled = false;
}

Elabore una aplicación que forme una matriz de orden NxM y la llene de datos enteros, (esta información la proporciona el programador), encuentre e imprima el elemento mayor y menbor, así como sus posiciones.

int[,] A = { {3,5,1},{-6,3,4},{8,0,4},{5,-7,3}};
int i, j,mayor,menor,fMayor,fMenor,cMayor,cMenor;

private void btnVerMatriz_Click(object sender, EventArgs e)
{
for(i=0;i<4;i++){
for(j= 0;j<3;j++){
txtMatriz.Text += A[i, j].ToString() + "\t";
}
txtMatriz.Text += "\r\n";
}
}

private void btnCalcular_Click(object sender, EventArgs e)
{
fMayor = fMenor = cMayor = cMenor = 0;
mayor = A[0, 0];
menor = A[0, 0];
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
if(A[i, j]>mayor){
mayor = A[i, j];
fMayor=i;
cMayor=j;
}
else if (A[i, j] < menor)
{
menor = A[i, j];
fMenor=i;
cMenor=j;
}
}
}
txtMayor.Text = mayor.ToString();
txtMenor.Text = menor.ToString();
txtPosMayor.Text = "[" + fMayor + "," + cMayor + "]";
txtPosMenor.Text = "[" + fMenor + "," + cMenor + "]";
}

Elabore una aplicación que forme una matriz de orden NxM y la llene de datos enteros, (esta información la proporciona el programador), a continuación obtenga e imprima:
* Número de valores iguales a cero
* Suma de todos los elementos de las filas impares

int[,] A = { { 3, 5, 0 }, { -6, 3, 4 }, { 8, 0, 4 }, { 5, -7, 3 }, { 3, 0, -8 }, { 5, 0, 7 }, { 1, 7, 0 } };
int i, j, numCeros = 0, sumaImpares = 0;
private void btnCalcular_Click(object sender, EventArgs e)
{
for (i = 0; i < 7; i++)
{
for (j = 0; j < 3; j++)
{
if (A[i, j] == 0)
{
numCeros += 1;
}
}
}
txtCeros.Text = numCeros.ToString();
}

private void btnSuma_Click(object sender, EventArgs e)
{
for (i = 0; i < 7; i += 2)
{
for (j = 0; j < 3; j++)
{
sumaImpares += A[i, j];

}
txtSuma.Text += sumaImpares.ToString() + " ";
sumaImpares = 0;
}
}

private void btnVerMatriz_Click(object sender, EventArgs e)
{
for (i = 0; i < 7; i++)
{
for (j = 0; j < 3; j++)
{
txtMatriz.Text += A[i, j].ToString() + "\t";
}
txtMatriz.Text += "\r\n";
}

}

miércoles, 18 de marzo de 2009

TALLER SOBRE OBJETOS

1. Cree una clase llamada Empleado, en la que existan los recursos necesarios para efectuar las siguientes acciones:
• Obtener el número de horas trabajadas por el empleado
• Obtener el valor de cada hora trabajada por el empleado
• Obtener el valor de la comisión del empleado
• Calcular y Entregar el pago total del empleado
• Obtener/Entregar el nombre del empleado (En C# esto es una propiedad)
Restricciones de implementación:
• Asuma que si el empleado trabajó más de 48 horas, las horas extra se le cancelan con un porcentaje del 50% adicional al valor de la hora normal.
• No deben existir valores negativos en los argumentos de llamada a los elementos de la clase.
• Se debe permitir al usuario decidir en qué momento desea terminar de ejecutar la aplicación.
Cree una clase llamada PruebaEmpleado que utilice la clase Empleado

2. Cree una clase llamada Poligonos, en la que existan los recursos necesarios para efectuar las siguientes acciones:
• Obtener el valor del lado de un cuadrado
• Obtener el valor del los dos lados diferentes de un rectángulo
• Obtener los dos valores (base y altura) de un triángulo
• Calcular y Entregar el área de un cuadrado
• Calcular y Entregar el área de un rectángulo
• Calcular y Entregar el área de un triángulo
Restricciones de implementación:
• No deben existir valores negativos en los argumentos de llamada a los elementos de la clase.
• Se debe permitir al usuario decidir en qué momento desea terminar de ejecutar la aplicación.
Cree una clase llamada PruebaFiguras que utilice la clase Poligonos

SOLUCIONES PROPUESTAS

Clase Empleado:
using System;

public class Empleado
{
private double horasT, valorH, comision,pago;
private String nEmpleado;

//Obtener el número de horas trabajadas por el empleado
public void ObtenerHoras(double h)
{
horasT = ((h>0)?h:0);
}

//Obtener el valor de cada hora trabajada por el empleado
public void ObtenerValor(double v)
{
valorH = ((v>0)?v:0);
}

//Obtener el valor de la comisión del empleado
public void ObtenerComision(double c)
{
comision = ((c>0)?c:0);
}

//Calcular y Entregar el pago total del empleado
public double PagoEmpleado()
{
/*Asuma que si el empleado trabajó más de 48 horas,
* las horas extra se le cancelan con un porcentaje
* del 50% adicional al valor de la hora normal.*/
if (horasT > 48)
{
pago = ((horasT - 48) * valorH * 1.5) + (48 * valorH) + comision; ;
}
else {
pago = horasT * valorH + comision;
}
return pago;
}

//Obtener/Entregar el nombre del empleado (En C# esto es una propiedad)
public String NombreEmpleado
{
get
{
return nEmpleado;
}
set
{
nEmpleado = value;
}
}
}


Clase PruebaEmpleado
using System;
public class PruebaEmpleado
{
public static void Main(string[] args) {
Empleado MiEmpleado = new Empleado();
String horas, valor, comision, menu,nombre;
double horasD, valorD, comisionD;
int seguir = 1, opcion;

while(seguir == 1){
Console.WriteLine("Seleccione una opción:\n1.Calcular pago\n2.Salir");
menu = Console.ReadLine();
opcion = Convert.ToInt32(menu);
switch (opcion)
{
case 1: Console.WriteLine("\n\nDigite su nombre");
nombre = Console.ReadLine();
MiEmpleado.NombreEmpleado = nombre;

Console.WriteLine("Digite el número de horas trabajadas");
horas = Console.ReadLine();
horasD = Convert.ToDouble(horas);
MiEmpleado.ObtenerHoras(horasD);

Console.WriteLine("Digite el valor de cada hora trabajada");
valor = Console.ReadLine();
valorD = Convert.ToDouble(valor);
MiEmpleado.ObtenerValor(valorD);

Console.WriteLine("Digite el valor de la comisión");
comision = Console.ReadLine();
comisionD = Convert.ToDouble(comision);
MiEmpleado.ObtenerComision(comisionD);

Console.WriteLine(MiEmpleado.NombreEmpleado + " su pago es: " + MiEmpleado.PagoEmpleado());
break;
case 2: seguir = 0;
break;
default: Console.WriteLine("Seleccione una opción válida");
break;
}//switch
}//while
}//Main
}//class


Clase Poligonos
using System;
public class Poligonos
{
private int ladoC, baseR, ladoR, baseT, ladoT;

//Obtener el valor del lado de un cuadrado
public void Cuadrado(int l)
{
ladoC = ((l>0)?l:0);
}

//Obtener el valor del los dos lados diferentes de un rectángulo
public void Rectangulo(int l1,int l2)
{
baseR = ((l1 > 0) ? l1 : 0);
ladoR = ((l2 > 0) ? l2 : 0);
}

//Obtener los dos valores (base y altura) de un triángulo
public void Triángulo(int l1, int l2)
{
baseT = ((l1 > 0) ? l1 : 0);
ladoT = ((l2 > 0) ? l2 : 0);
}

//Calcular y Entregar el área de un cuadrado
public int AreaCuadrado()
{
return ladoC*ladoC;
}

//Calcular y Entregar el área de un rectángulo
public int AreaRectangulo()
{
return ladoR * baseR;
}

//Calcular y Entregar el área de un triángulo
public int AreaTriangulo()
{
return (ladoT * baseT)/2;
}
}


Clase PruebaFiguras
using System;
public class PruebaFiguras
{
public static void Main(string[] args)
{
Poligonos MisPoligonos = new Poligonos();
String lado1, lado2,menu;
int l1, l2;
int seguir = 1, opcion;

while (seguir == 1)
{
Console.WriteLine("Seleccione una opción:\n1.Área cuadrado\n2.Área rectángulo\n3.Área triángulo\n4.Salir");
menu = Console.ReadLine();
opcion = Convert.ToInt32(menu);
switch (opcion)
{
case 1: Console.WriteLine("\n\nDigite el tamaño de un lado del cuadrado");
lado1 = Console.ReadLine();
l1 = Convert.ToInt32(lado1);
MisPoligonos.Cuadrado(l1);
Console.WriteLine("El área del cuadrado es : " + MisPoligonos.AreaCuadrado());
break;

case 2: Console.WriteLine("\n\nDigite el tamaño de la base del rectángulo");
lado1 = Console.ReadLine();
l1 = Convert.ToInt32(lado1);

Console.WriteLine("\n\nDigite el tamaño de uno de los lados del rectángulo");
lado2 = Console.ReadLine();
l2 = Convert.ToInt32(lado2);

MisPoligonos.Rectangulo(l1, l2);

Console.WriteLine("El área del rectángulo es : " + MisPoligonos.AreaRectangulo());
break;

case 3: Console.WriteLine("\n\nDigite el tamaño de la base del triángulo");
lado1 = Console.ReadLine();
l1 = Convert.ToInt32(lado1);

Console.WriteLine("\n\nDigite el tamaño de la altura del triángulo");
lado2 = Console.ReadLine();
l2 = Convert.ToInt32(lado2);

MisPoligonos.Triángulo(l1, l2);

Console.WriteLine("El área del triángulo es : " + MisPoligonos.AreaTriangulo());
break;

case 4: seguir = 0;
break;
default: Console.WriteLine("Seleccione una opción válida");
break;
}//switch
Console.WriteLine("\n\n\n");
}//while
}//Main
}//class