Está en la página 1de 11

UNIVERSIDAD AUTNOMA DE OCCIDENTE

FACULTAD DE INGENIERA
DEPARTAMENTO DE OPERACIONES Y SISTEMAS
CDIGO:

ALGORITMIA Y
PROGRAMACIN

NOMBRE:

Taller: Arreglos Unidimensionales


PRIMERA PARTE

GRUPO __

FECHA: _____/
_____/___

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

Tipo
Entero
Real [ ]
Cadena [ ]
Cadena [ ]

Entradas
Identificacin
Cantidad de
funcionarios
Sueldo
Nombre
Apellido

PROCESO: Principal
Resultados Temporales
Tipo
Identificacin
Entero
Contador funcionarios

Constantes:
Proceso:
Leer la cantidad de funcionarios ( mayor a 0 )

Tipo
Real
Cadena [ ]
Cadena [ ]
Real [ ]

Salidas
Identificacin
promedio
nombre
apellido
sueldo

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

Tipo
Entero
Real [ ]

Entradas
Identificacin
Cantidad de
funcionarios
Sueldo

PROCESO: calcularPromedio
Resultados Temporales
Tipo
Identificacin
Tipo
Entero
Contador de funcionarios Real
Real
Acumulador de sueldo

Salidas
Identificacin
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:

btProcesar

textMsgAccion

btLimpiar

btResultado

btSalir

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);

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:

x02 + x12 + x 22 + x32 + ... + x n2


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:

mediaGeometrica = n x0 * n x1 * n x 2 * ... * n x n
mediaArmonica =

n
1

Se muestra la solucin de los puntos b y c. Reto: Incluir la parte a

A. Proceso: Principal

Tipo
Entero
Real [ ]
Caracter

Entradas
Identificacin
Cantidad de valores
valorX
opcin deseada

PROCESO: Principal
Resultados Temporales
Tipo
Identificacin
Entero
Contador de valores

Tipo
Real
Real
Real

Salidas
Identificacin
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

Tipo
Entero
Real [ ]

Entradas
Identificacin
Cantidad de valores
valorX

PROCESO: calcularMagnitud
Resultados Temporales
Tipo
Identificacin
Tipo
Entero Contador de valores
Real
Real
Suma trminos cuadrados

Constantes:
Proceso:
Recibir cantidad de valores
Recibir valoresX
Asignar 0 contador de valores
Asignar 0 a suma trminos cuadrados

Salidas
Identificacin
Magnitud

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

Tipo
Entero
Real [ ]

Entradas
Identificacin
Cantidad de valores
valorX

PROCESO: calcularMediaGeometrica
Resultados Temporales
Tipo
Identificacin
Tipo
Entero Contador de valores
Real

Salidas
Identificacin
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

Tipo
Entero
Real [ ]

Entradas
Identificacin
Cantidad de valores
valorX

PROCESO: calcularMediaArmonica
Resultados Temporales
Tipo
Identificacin
Tipo
Entero Contador de valores
Real
Real
Acumulador trminos
inversos

Constantes:
Proceso:
Recibir cantidad de valores
Recibir valoresX
Asignar 0 contador de valores
Asignar 0 a acumulador trminos inversos

Salidas
Identificacin
Media armnica

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]<0 && opcion == 'S'){
valor[cont] = valor[cont] * ( -1);
msg += 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:

-2

datos
3 -4 5 1

resultado

cont

valor[cont]

cadena

opcion

Valor de impresin

msg

También podría gustarte