taller algoritmia

11
UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA DEPARTAMENTO DE OPERACIONES Y SISTEMAS ALGORITMIA Y PROGRAMACIÓN GRUPO GRUPO GRUPO GRUPO __ __ __ __ CÓDIGO: DIGO: DIGO: DIGO: NOMBRE: NOMBRE: NOMBRE: NOMBRE: Taller: Arreglos Unidimensionales FECHA: FECHA: FECHA: FECHA: _____ _____ _____ _____/___ ___ ___ ___ PRIMERA PARTE Ejemplos resueltos 1. Elabore una solución que permita ingresar los nombres completos y el salario de un conjunto conocido de funcionarios de una organización del estado y muestre como resultado el promedio pagado; los datos de entrada deben ser igualmente mostrados después de realizar el cálculo del promedio, la GUI a utilizar puede ser como se muestra a continuación: A. Proceso: Principal PROCESO: Principal Entradas Resultados Temporales Salidas Tipo Identificación Tipo Identificación Tipo Identificación 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 )

Upload: zayde-abadia

Post on 18-Dec-2015

57 views

Category:

Documents


3 download

DESCRIPTION

SOLUCION DE ALGORITMOS

TRANSCRIPT

  • 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