Informática I / INF – 140

Anuncio
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
Algoritmos
2º Semestre del 2003
1. Realice un algoritmo que dado dos vectores llamados A y B respectivamente, los
cuales se encuentran con datos enteros ordenados en forma ascendente sean
transferidos en tercer vector C sin incluir los datos repetidos.
Ejemplo:
3 5 7 8 13
A=1................... A=5
4 7 8
B=1.......B=3
Vector resultado
3 4 5 7 8
13
C=1............................ C=6
Desarrollo.
Algoritmo: Vectores
Variable: entero i, j, k.
Arreglo [1.........25] enteros: A, B, C
Arreglo [1.........50] enteros: C
Inicio
i = 1; j = 1; k = 1;
mientras (i <25 y j<25)hacer
{
si(A[i] < B[j]) entonces
{
C[k] = A[i];
i ++;
}
sino
{
si (A[i] = B[j]) entonces
{
C[k] = A[i];
i ++;
j ++;
}
sino
{
1
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
C[k] = B[j];
j ++;
}
}
}
si (i >= 25 y j ≠ 25) entonces
{
C[k] = B[j];
j ++;
k ++;
}
si (i < 25 y j >= 25) entonces
{
C[k] = A[j];
i ++;
k ++;
}
} /* fin inicio */
2. Desarrollar un algoritmo en pseudocódigo que lea los nombres y los precios de las
panaderías de Valparaíso, y entregue los nombres y precios de las N panaderías
con el menor precio.
Desarrollo.
Algoritmo: Panaderías.
Variable: entero: inicio, fin, num, sgte, aux1, aux2, i
Arreglo [1.........50] enteros: A, B
Donde: A: corresponden a las panaderías.
B: corresponde a los respectivos precios de cada panadería.
Inicio
{
repetir
{
escribir (‘Ingrese número de panadería a mostrar los menores precios’);
leer (num);
}
hasta que (num < 50)
fin = 50;
inicio =1;
mientras (fin > 1) hacer
{
2
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
sgte = inicio +1;
mientras (sgte <= fin) hacer
{
si (B[inicio] > B [sgte]) entonces
{
aux1 = B[inicio ]
/* este ciclo permite un ordenamiento */
aux2 = A[inicio ]
/* burbuja de los elemntos contenidos */
B[inicio] = B [sgte] /* tanto en el vector de precios como el */
A[inicio] = A [sgte] /* vector del nombre de las panaderías.*/
B[sgte] = aux1
A[sgte] = aux2
}
sgte ++;
}
inicnio++
fin = fin -1;
}/* los dos ciclos anteriores permiten ordenar las panadería en forma ascendente
de acuerdo a los precios más baratos hasta los más caros.*/
i=1;
mientras (i <= num) hacer
{
escribir (‘Las panaderías más baratas con sus respectivos precios son: ‘);
escribir (A[i], B[i]);
} /* el ciclo muestra la cantidad de panaderías más baratas que se solicitaron
}/* fin del inicio */
3. Desarrollar un algoritmo que lea un conjunto de números, obtenga para cada uno de
ellos las suma de los dígitos, y entregue como resultado el número cuya suma de
los dígitos sea la mayor, entre todos los números ingresados por el usuario.
Desarrollo:
Algoritmo: Numero_mayor
Variables: entero: mayor, suma, numero, auxiliar, valor
caracter: resp,
Inicio
{
mayor = 0;
repetir
{
repetir
{
escribir(‘ingrese numero’)
leer(numero)
}hasta (numero > 0)
3
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
auxiliar = numero
suma = 0
repetir
{
suma = numero MOD 10 + suma
numero = numero DIV 10
}hasta(numero = 0)
Si (suma > mayor) entonces
mayor = suma
valor = auxiliar
fin si
escribir(‘Desea ingresar otro número (S/N): ’)
leer(resp)
}hasta (resp = ‘N’)
escribir (‘El valor cuya suma de sus dígitos es mayor es’, valor);
escribir (‘La suma de sus dígitos es: ‘, mayor)
}
4. Diseñe un algoritmo para calcular e imprimir los 15 primeros reglones de una tabla,
de acuerdo con las siguientes reglas:






La tabla va ha tener cuatro columnas llamadas N, A, B, C.
Los valores en el primer reglón de la tabla son 0, 1, 1, 1.
El valor de N es mayor en 1 que su valor en el reglón anterior
El valor de A es dos veces mayor que su valor en el reglón anterior.
El valor de B es la suma de los valores de A hasta C, del reglón anterior.
El valor de C es la suma acumulada de los valores de B.
Desarrollo
Variables: entero: reglon, N, A, B, C, i, j, k, suma
Arreglo [1…15, 1…4] de entero: tabla
Inicio
tabla[1,1]= 0, tabla[1,2]= 1, tabla[1,1]= 1, tabla[1,1]= 1
i =2
mientras(i < 15 ) hacer
j=1
mientras (j<4) hacer
Si(j=1) entonces
tabla[i,j] = tabla [i-1,j] + 1
fin si
Si(j=2) entonces
4
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
tabla[i,j] = tabla [i-1,j] + 2
fin si
Si(j=3) entonces
tabla[i,j] = tabla [i-1,j-1] + tabla[i-1,j]+tabla[i-1,j+1]
fin si
Si(j=4) entonces
k=1, suma =0
mientras(k<i) hacer
suma = tabla[k,j]
k++
fin mientras
tabla [i,j] = suma
fin si
j++
fin mientras
i++
fin mientras
i=1
mientras (i<15)
j=1
escribir(‘El reglón’, i,’los valores de N,A,B,C respectivamente son: ‘)
mientras (j<4)
escribir (tabla[i,j])
j++
fin mientras
i++
fin mientras
fin inicio
5. Se desea obtener el grado de eficiencia de 250 operarios de una fábrica productora
de tornillos, de acuerdo a las siguientes condiciones:



Ausencia al trabajo ≤ 3.5 horas
Tornillos defectuosos < 300
Tornillos producidos > 10000
Los grados de eficiencia para cada trabajador son asignados de la siguiente forma:





Si no cumple con ninguna condición
Si sólo se cumple la primera condición
Si sólo se cumple la segunda condición
Si sólo se cumple la tercera condición
Si cumple la primera y segunda condición
grado = 5
grado = 7
grado = 8
grado = 9
grado = 12
5
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140



Si cumple la primera y tercera condición
Si cumple la segunda y tercera condición
Si cumple las tres condiciones
grado = 13
grado = 15
grado = 20
Los datos para cada trabajador son los siguientes:




Código del trabajador
Horas de ausencia
Tornillos defectuosos
Tornillos producidos.
Diseñe un algoritmo que, de acuerdo a los datos de cada trabajador, calcule su
correspondiente grado de eficiencia y que determine en que grado se encuentra la
mayor cantidad de trabajadores.
Algoritmo: Eficiencia
Variables: entero: aux1, aux2, aux3, i, j, cond1, cond2, cond3, cond4, cont1, cont2,
cont3, cont4, cont5, cont6, cont7, cont8
Arreglo [1…250, 1…4] de enteros: T
Donde: T es la matriz que almacena los datos de los trabajadores de la empresa.
Inicio
cont1=0, cont2=0, cont3=0, cont4=0, cont5=0, cont6=0, cont7=0, cont8=0
i=1
mientras(i<=250) hacer
aux1=0; aux2=0; aux3=0;
j=2
mientras(j<=4) hacer
si (j=2) entonces
si(T[i,j] <= 3.5)entonces
aux1=1;
fin si
fin si
si (j=3) entonces
si(T[i,j] < 300)entonces
aux2=1;
fin si
fin si
si (j=4)entonces
si(T[i,j] > 10000) entonces
aux3=1;
fin si
fin si
6
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
j++
fin mientras
si (aux1=0 y aux2=0 y aux3=0) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 5’)
cond1 ++
fin si
si (aux1=1 y aux2=0 y aux3=0) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 7’)
cond2 ++
fin si
si (aux1=0 y aux2=1 y aux3=0) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 8’)
cond3 ++
fin si
si (aux1=0 y aux2=0 y aux3=1) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 9’)
cond4 ++
fin si
si (aux1=1 y aux2=1 y aux3=0) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 12’)
cond5 ++
fin si
si (aux1=1 y aux2=0y aux3=1) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 13’)
cond6 ++
fin si
si (aux1=0 y aux2=1 y aux3=1 entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 15’)
cond7 ++
fin si si (aux1=1 y aux2=1 y aux3=1) entonces
escribir (‘El empleado’, T[i,1], ‘posee grado de eficiencia = 20’)
cond8 ++
fin si
i++
fin mientras
escribir (cont1, ‘Se encuentran en la categoría grado 5’)
escribir (cont2, ‘Se encuentran en la categoría grado 7’)
escribir (cont3, ‘Se encuentran en la categoría grado 8’)
escribir (cont4, ‘Se encuentran en la categoría grado 9’)
escribir (cont5, ‘Se encuentran en la categoría grado 12’)
escribir (cont6, ‘Se encuentran en la categoría grado 13’)
escribir (cont7, ‘Se encuentran en la categoría grado 15’)
escribir (cont8, ‘Se encuentran en la categoría grado 20’)
fin inicio
7
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
6. En una Universidad se efectúa un examen de admisión que costa de dos pruebas:
Aptitud Matemáticas y Aptitud Verbal. Cada prueba consta de 30 preguntas de
selección múltiple y cada pregunta tiene 5 opciones numeradas de 1 a 5.
Las respuestas se registraron en una hoja de respuestas con 60 líneas de una sola
posición, que contiene, cada una, la respuesta a la pregunta correspondiente.
Las 30 primeras posiciones corresponden al examen de Aptitud Matemática y las
restantes a la Aptitud Verbal.
Se presentaron en el examen N estudiantes.
Diseñar un algoritmo que entregue la siguiente información:
 El puntaje obtenido por cada estudiante en cada examen.
 El puntaje total obtenido por cada estudiante.
 El puntaje promedio de cada examen.
 El puntaje promedio total.
 El número de estudiantes (identificación) y el puntaje correspondiente de los
estudiantes que obtuvieron igual o superior al promedio.
Nota: El manejo para la pauta de corrección de las pruebas queda a la creatividad.
7. El cálculo frecuente efectuado en el Análisis Financiero es el cálculo de la
“Depreciación”. Una técnica muy común para hacerlo es el método de “la suma de
los dígitos de los años“.
Por ejemplo: Suponga que $150.000 serán depreciados mediante un periodo de 5
años. La suma de los dígitos de los años 1+2+3+4+5=15. De acuerdo con este
método, entonces 5/15 de $150.000 es depreciado el primer año, 4/15 el segundo,
etc.
Diseñe un algoritmo que a partir de la cantidad a ser depreciada y el número de
años considerado para la depreciación, obtenga para cada uno de los años, la
depreciación respectiva.
8. Diseñe un algoritmo que para un vector A de orden n, al cual se ingresan valores
enteros positivos ordenados en forma ascendente, ubique un elemento x mediante
el método de búsqueda binaria.
El Método de Búsqueda Binaria consiste en comparar el elemento buscado con el
que ocupa en la lista la posición central y, según sea mayos o menor que la central,
repetir la operación considerando una sublista formada por los elementos buscados
en la posición central +1 y el último, ambos inclusive, o por los que se encuentran
entre el primero y el ubicado en la posición central -1, también ambos inclusive. El
proceso finalizará cuando el elemento sea encontrado o la sublista de búsqueda
quede sin elementos.
9. Sea la serie definida por: a1 = 0; a2 = 3 * an-1 + 2 * an-2 (para n ≥ 3)
Diseñe un algoritmo que permita obtener el valor y el rango del primer término que
sea mayos o igual a X, X ≥ 0
8
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
Ejemplo:
a1 = 0
a2 = 1
a3 = 3 * 1 + 2 * 0 = 3
a4 = 3 * 3 + 2 * 1 = 11
a5 = 3 * 11 + 2 * 3 = 39
a6 = 3 * 39 + 2 * 11 = 139
El primer término cuyo valor es mayor o igual a 100 es a 6(rango -6) con un valor
igual a 139.
10. Desarrolle un algoritmo que lea un número entero y entregue como resultado el
número que resulta al invertir sus dígitos.
11. De sarrollar un algoritmo que lea la posición de un caballo en un tablero de ajedrez y
entregue las posiciones posibles hacia las cuales el caballo puede moverse.
Los movimientos del caballo se realizan en forma de L, existiendo como máximo
ocho posibilidades.








Arriba 2 – izquierda 1
Arriba 2 – derecha 1
Izquierda 2 - Arriba 1
Izquierda 2 – abajo 1
Derecha 2 - arriba 1
Derecha 2 – abajo 1
Abajo 2 – izquierda 1
Abajo 2 – derecha 1
12. Una empresa requiere la información correspondiente al sueldo líquido de sus
empleados. El cálculo del sueldo líquido requiere del sueldo bruto, la tasa de
impuesto y el número de cargas familiares. Además existe un valor po cada carga
familiar, que es igual para todos los empleados. Para obtener el sueldo líquido se
utiliza la siguiente expresión:
Sueldo líquido=sueldo bruto – (sueldo bruto * tasa impuesto)+valor carga * Nº de cargas
La tabla de tasa de impuesto se obtiene de acuerdo a la siguiente tabla:




Sueldo bruto ≤ $ 150.000
$ 150.000 < Sueldo bruto ≤ $ 250.000
$ 250.000 < Sueldo bruto ≤ $ 350.000
Sueldo bruto > $ 350.000
tasa = 0%
tasa = 8%
tasa = 13%
tasa = 20%
Siendo el valor de la carga familiar de $ 5.000
9
Universidad Católica de Valparaíso.
Facultad de Ingeniería.
Escuela de Informática.
Informática I / INF – 140
10
Descargar