taller algoritmia
DESCRIPTION
SOLUCION DE ALGORITMOSTRANSCRIPT
-
UNIVERSIDAD AUTNOMA DE OCCIDENTE
FACULTAD DE INGENIERA DEPARTAMENTO DE OPERACIONES Y SISTEMAS
ALGORITMIA Y PROGRAMACIN GRUPO GRUPO GRUPO GRUPO ________
CCCCDIGO:DIGO:DIGO:DIGO: NOMBRE:NOMBRE:NOMBRE:NOMBRE:
Taller: Arreglos Unidimensionales FECHA:FECHA:FECHA:FECHA: ____________________////____________
PRIMERA PARTE Ejemplos resueltos
1. Elabore una solucin que permita ingresar los nombres completos y el salario de un conjunto conocido de funcionarios de una organizacin del estado y muestre como resultado el promedio pagado; los datos de entrada deben ser igualmente mostrados despus de realizar el clculo del promedio, la GUI a utilizar puede ser como se muestra a continuacin:
A. Proceso: Principal
PROCESO: Principal Entradas Resultados Temporales Salidas
Tipo Identificacin Tipo Identificacin Tipo Identificacin Entero
Real [ ] Cadena [ ] Cadena [ ]
Cantidad de funcionarios Sueldo Nombre Apellido
Entero Contador funcionarios Real Cadena [ ] Cadena [ ] Real [ ]
promedio nombre apellido sueldo
Constantes: Proceso: Leer la cantidad de funcionarios ( mayor a 0 )
-
Asignar 0 a contador funcionarios
Procesar para cada funcionario ( contador funcionario < cantidad funcionario) Leer nombre [contador funcionario] Leer Apellido [contador funcionario] Leer sueldo [contador funcionario] ( mayor a 0) Incrementar en 1 el contador de funcionario Repetir para siguiente funcionario
Calcular el promedio de sueldo mediante sub-proceso: calcularPromedio, pasndole los valores: sueldos y cantidad de funcionarios
asignar 0 a contador de funcionario Procesar para cada funcionario ( contador funcionario < cantidad funcionario) Imprimir nombre[contador funcionario], apellido[contador funcionario] y sueldo[contador funcionario] Incrementar en 1 el contador de funcionario Repetir para siguiente funcionario
Imprimir promedio
Terminar
B. Sub-Proceso: calcularPromedio
PROCESO: calcularPromedio Entradas Resultados Temporales Salidas
Tipo Identificacin Tipo Identificacin Tipo Identificacin Entero
Real [ ] Cantidad de funcionarios Sueldo
Entero Real
Contador de funcionarios Acumulador de sueldo
Real Promedio
Constantes: Proceso: Recibir cantidad de funcionarios Recibir valores de sueldos
Asignar 0 contador de funcionarios Asignar 0 a acumulador de sueldos
Procesar para cada funcionario ( contador funcionarios < cantidad funcionarios) Acumular en acumulador de sueldos el valor de sueldo [contador funcionarios] Incrementar 1 a contador de funcionarios Repetir para la siguiente funcionario
Calcular promedio con frmula: acumulador de sueldos / cantidad de sueldos Regresar promedio
Terminar
SOLUCION:
Para entender el cdigo tenga en consideracin los nombres de los campos tal y como aparecen en la siguiente imagen:
-
En el cdigo prestar especial atencin a las instrucciones resaltadas en rojo, ellas indican lo que Usted debe incluir en la solucin
namespace Arreglos_y_Promedios_NEW_Version_2014 {
public partial class Form1 : Form {
int contadorDatos = 1;
string[] nombre; string[] apellido; double[] sueldo;
bool primeraVez = true;
public Form1() {
InitializeComponent(); }
private void btResultados_Click(object sender, EventArgs e) {
calcularFueraCiclo(); }
private void btProcesar_Click(object sender, EventArgs e) { principal();
}
private void calcularFueraCiclo() {
string respuesta = "";
double promedioSueldo = 0.0; // calculos por fuera del ciclo
promedioSueldo = calcularPromedio(sueldo);
textMsgAccion
btProcesar
btLimpiar
btSalir btResultado
-
for (int contadorDatos = 0; contadorDatos < nombre.Length;
++contadorDatos) { respuesta += apellido [contadorDatos] + " " + nombre [contadorDatos] + " " +
sueldo[contadorDatos] + System.Environment.NewLine; }
respuesta += System.Environment.NewLine + " El Promedio calculado para las " + sueldo.Length + " personas fue de: " + promedioSueldo;
textRespuesta.Text = respuesta;
}
private void principal() {
int cantidadDatos = int.Parse(textCantidadDatos.Text);
textCantidadDatos.Enabled = false;
if (primeraVez) { primeraVez = false;
nombre = new string[cantidadDatos]; apellido = new string[cantidadDatos]; sueldo = new double[cantidadDatos];
}
nombre [contadorDatos - 1] = textNombre.Text.ToUpper(); apellido [contadorDatos - 1] = textApellido.Text.ToUpper(); sueldo[contadorDatos - 1] = double.Parse(textSueldo.Text); textIngresoNumero.Text = contadorDatos.ToString();
textNombre.Clear();
textApellido.Clear(); textSueldo.Clear();
++contadorDatos;
if (contadorDatos > cantidadDatos) { btResultados.Visible = true;
btResultados.Enabled = true;
btProcesar.Enabled = false; btLimpiar.Enabled = false;
textNombre.Enabled = false;
textApellido.Enabled = false; textSueldo.Enabled = false;
textMsgAccion.Visible = true;
} }
private double calcularPromedio(double[] sueldo) {
double acumulaSueldo = 0.0; double promedioSueldo = 0.0;
for (int contadorDatos = 0; contadorDatos < sueldo.Length; ++contadorDatos) { acumulaSueldo += sueldo[contadorDatos];
} promedioSueldo = acumulaSueldo / sueldo.Length;
return (promedioSueldo);
}
-
private void btLimpiar_Click(object sender, EventArgs e) {
textNombre.Clear();
textApellido.Clear();
textSueldo.Clear(); textRespuesta.Clear();
textIngresoNumero.Clear();
}
private void btSalir_Click(object sender, EventArgs e) {
Close(); }
} }
2. Elabore una solucin que permita ingresar los nombres, apellidos y salarios de un grupo de X personas. Luego de ingresar se debe poder dar un apellido y mostrar si hace parte de los datos ingresados inicialmente, la GUI a utilizar puede ser como se muestra a continuacin:
SEGUNDA PARTE Ejercicios propuestos
3. Elabore una solucin que conociendo los nombres, los apellidos y la edad de un grupo de personas, cuya cantidad se conoce; lea un apellido y con este valor determine y muestre qu tipo de bsqueda obtuvo. Los diferentes tipos de bsqueda que pueden darse son:
a. Tipo de bsqueda 1, si un nombre solicitado al usuario, se encuentra una sola vez entre los datos ledos.
b. Tipo de bsqueda 2, si un nombre solicitado al usuario, se encuentra ms de una vez entre los datos ledos.
c. Tipo de bsqueda 0, si un nombre solicitado al usuario, no se encuentra entre los datos ledos.
-
4. Elabore una solucin qu mediante una opcin seleccionada por el usuario (a, b, c) sea capaz de realizar las siguientes tareas (cada opcin debe realizarse en sub-procesos individuales:
a. Lea dos (2) arreglos unidimensionales de N elementos de naturaleza real y los sume trmino a trmino.
b. Lea un arreglo unidimensional y calcule su magnitud, mediante la siguiente expresin:
223
22
21
20 ... nxxxxx +++++
c. Lea un arreglos unidimensional y calcule su media geomtrica y su media armnica, mediante las siguientes expresiones, el usuario debe indicar el tipo de clculo que desea:
nn
nnn xxxxtricamediaGeome *...*** 210=
=
ix
nicamediaArmon 1
Se muestra la solucin de los puntos b y c. Reto: Incluir la parte a
-
A. Proceso: Principal
PROCESO: Principal Entradas Resultados Temporales Salidas
Tipo Identificacin Tipo Identificacin Tipo Identificacin Entero Real [ ] Caracter
Cantidad de valores valorX opcin deseada
Entero Contador de valores Real Real Real
Magnitud Media geomtrica Media Armnica
Constantes: Proceso: Leer la cantidad de valores ( mayor a 0 ) Asignar 0 a contador valores
Procesar para cada valor ( contador valores < cantidad valores ) Leer valorX [contador valores] Incrementar en 1 el contador de valores Repetir para siguiente valor
Leer opcin deseada ( M = Magnitud, G = Geomtrica, A = Armnica () Si la opcin deseada es M
Calcular magnitud del vector mediante subproceso calcularMagnitud, pasndole: cantidad de valores y valorX Imprimir magnitud del vector
Sino Si la opcin deseada es G
Calcular media geomtrica mediante subproceso calcularMediaGeometrica, pasndole: cantidad de valores y valorX Imprimir media geomtrica
Sino Calcular media armnica mediante subproceso calcularMediaArmonica, pasndole: cantidad de valores y valorX Imprimir media armnica
Terminar
B. Sub-Proceso: calcularMagnitud
PROCESO: calcularMagnitud Entradas Resultados Temporales Salidas
Tipo Identificacin Tipo Identificacin Tipo Identificacin Entero Real [ ]
Cantidad de valores valorX
Entero Real
Contador de valores Suma trminos cuadrados
Real Magnitud
Constantes: Proceso: Recibir cantidad de valores Recibir valoresX
Asignar 0 contador de valores Asignar 0 a suma trminos cuadrados
-
Procesar para cada valor ( contador valores < cantidad valores) Acumular en suma trminos cuadrados el valor de potencia( valorX [contador valores], 2) Incrementar 1 a contador de valores Repetir para la siguiente valor
Calcular magnitud con frmula: raz cuadrada (suma de trminos cuadrados) Regresar magnitud
Terminar
C. Sub-Proceso: calcularMediaGeometrica
PROCESO: calcularMediaGeometrica Entradas Resultados Temporales Salidas
Tipo Identificacin Tipo Identificacin Tipo Identificacin Entero Real [ ]
Cantidad de valores valorX
Entero
Contador de valores
Real Media geomtrica
Constantes: Proceso: Recibir cantidad de valores Recibir valoresX
Asignar 0 contador de valores Asignar 1 a media geomtrica
Procesar para cada valor ( contador valores < cantidad valores) Acumular multiplicando en media geomtrica el valor de potencia( valorX [contador valores], 1 / cantidad valores) Incrementar 1 a contador de valores Repetir para la siguiente valor
Regresar media geomtrica
Terminar
D. Sub-Proceso: calcularMediaArmonica
PROCESO: calcularMediaArmonica Entradas Resultados Temporales Salidas
Tipo Identificacin Tipo Identificacin Tipo Identificacin Entero Real [ ]
Cantidad de valores valorX
Entero Real
Contador de valores Acumulador trminos inversos
Real Media armnica
Constantes: Proceso: Recibir cantidad de valores Recibir valoresX
Asignar 0 contador de valores Asignar 0 a acumulador trminos inversos
-
Procesar para cada valor ( contador valores < cantidad valores) Acumular en acumulador de trminos inversos el valor de: 1 / valorX [contador valores] Incrementar 1 a contador de valores Repetir para la siguiente valor
Calcular media armnica con formula: cantidad valores / acumulador trminos inversos Regresar media armnica
Terminar
5. Elabore una solucin que permia leer los nombres completos y las calificaciones de N estudiantes. Se desea mostrar como resultado CUANTOS estudiantes estn por encima del promedio y CUANTOS estudiantes estn por debajo del promedio.
6. Elabore una solucin que permita ingresar los nombres completos y los sueldos de una cantidad conocida de empleados de una compaa, este comportamiento debe determinar CUALES empleados ganan ms de del salario mnimo y CUALES empleados ganan por debajo del salario mnimo.
7. Elabore una solucin que procese los nombres completos y las edades de los N participantes del grupo de Algoritmia y Programacin, mostrando como resultado el nombre del mayor de los estudiantes. La solucin debe igualmente, determinar si un participante se encuentra cursando el curso o si no lo est, buscndolo por el apellido. Los valores de entrada deben ser almacenados haciendo uso de estructuras de datos: Unidimensionales.
8. Se tienen los valores de produccin de una planta de qumicos, para cada uno de los 12 meses de un ao en particular y se desea saber en qu mes se produjo su pico ms alto de produccin.
9. Elabore un aplicativo que almacene las placas, tipo de vehculo (a-para automovil y m-para moto) y tiempo de permanencia, de un conjunto de vehculos que ingresaron a un parqueadero, y permita generar cualquiera de los siguientes reportes:
a. Generar el listado de las placas de todos los vehculos que son del tipo de vehculo indicado por el usuario.
b. Generar un reporte que contenga el nmero de vehculos y sumatoria de tiempos de permanencia del tipo de vehculo indicado por el usuario.
c. Generar un reporte que contenga la placa, tiempo de permanencia y valor a cancelar por el parqueo, de todos los vehculos almacenados, teniendo en las polticas para su comput, las cuales son indicadas en la siguiente tabla.
Automvil Moto
Cobra $3.500 por cada hora (o su
correspondiente por fraccin), si el tiempo de
permaneca fue inferior a 4 horas. Para tiempos
de permanencia iguales o mayores, cobra
$2.500 por cada hora (o su correspondiente por
Cobra $1.800 por cada hora (o su
correspondiente por fraccin), en las 3 primeras
horas. En las restantes cobra $1.400 por cada
hora (o su correspondiente por fraccin).
-
fraccin).
d. Generar un reporte que contenga las placas y tiempos de permanencia de aquellos vehculos, cuya permanencia estuvo entre un par de tiempos solicitados al usuario.
e. Generar un reporte que contenga placa, nombre completo del tipo de vehculo (automvil o moto) y tiempo, del vehculo con menor tiempo de permanencia.
TERCERA PARTE Pruebas de escritorio
1. Realice la prueba de escritorio al siguiente segmento de cdigo:
double [ ] valoresEntrada = {6.0, 2.5, 3.0, 1.0, 4.0};
for ( int counter = 0; counter < valoresEntrada.Length; counter ++ ){ valoresEntrada[counter] = valoresEntrada [counter] * 2;
}
for ( int counter = 0; counter < valoresEntrada.Length; counter ++ ){ Console.WriteLine ( valoresEntrada[counter]);
}
2. Realice la prueba de escritorio al siguiente segmento de cdigo:
double [ ] valoresEntrada = {6.0, 2.5, 3.0, 1.0, 4.0};
for ( int counter = valoresEntrada.Length 1 ; counter >= 0; - - counter ){ Console.WriteLine ( valoresEntrada[counter]);
}
3. Con la declaracin de la matriz: int[ ] vectorDatos = { 3, -8, 2, 0, -3, 6 }; resuelva el siguiente segmento de cdigo:
double resultado = vectorDatos [2] * vectorDatos.Length vectorDatos [0] / vectorDatos[5] Console.WriteLine (La respuesta es: + resultado);
4. Realice un seguimiento al siguiente cdigo y realice la prueba de escritorio, indicando cada resultado y la impresin final del mismo.
private void principal ( ) { string cadena = ; int datos [ ] = { -2, 3, -4, 5, 1 }; int resultado = calcularRespuesta( datos, 'S' );
if( resultado % 2 == 0 ){ cadena = "EXITOSO" ; }else{ cadena = "NO EXITOSO" ; }
public int calcularRespuesta ( int valor[ ], char opcion){ int msg = 0;
for (int cont = 0; cont < valor.Length; ++ cont){ msg += valor[cont]; if (valor[cont]
-
Console.WriteLine ("Fue: " + cadena) ; } }
} return(msg); }
Indique (en el siguiente cuadro) los valores que vaya tomando cada uno de las variables de los procesos y subprocesos:
datos resultado cadena Valor de impresin - 2 3 - 4 5 1
cont valor[cont] opcion msg