Beruflich Dokumente
Kultur Dokumente
1
En los siguientes ejercicios, diseñe, especifique e implemente según sea caso.
Tengan presente cualquier resolución requiere primero hacer el análisis, el diseño y luego la especificación, sin
necesidad de pensar todavía en el cómo va ser el algoritmo, con esto tenemos una idea clara de lo que se
quiere, si se desea construir una casa, el ingeniero primero analiza el contexto, diseña, especifica y luego
construye, valore la importancia de cada uno de los pasos.
x={ } o x={dato}
x={e1, e2,…,en} x={e1, e2,…dato, …,en}
dato, pos
mostrarVector(x, dx)
Especificacion. Consiste en especificar las condiciones que deben cumplir los datos de entrada para
obtener los datos salida.
ACCION insertarxPosic(Vector x, ENTERO dx, ENTERO pos, TD dato)
//Inserta el elemento dato en la posición pos del vector X
PRE: x = < > x = <e1, e2 ...,en> pos [0, n+1] donde n = dx-1
POS: x = <dato > x = <e1, e2 ...,dato, ...en+1>
0 1 2 3 4 5 6 7
12 5 2 8 19 3 2 6
2
}
}
else{
printf("Dimension fuera de rango ...\n");
system("pause");
}
}
3. Implemente en lenguaje C la siguiente especificación eliminar un elemento de una posición del vector:
ACCION eliminarxPosic(Vector x, ENTERO dx, TD pos)
//Ellimina el elemento de la posición pos del vector X
PRE: x = < > x = <e1, e2 ...,en> pos [0, n] donde n = dx-1
POS: Msge =”Vector vacio…” x = <e1, e2 ..., en-1>
Solucion:
//Ellimina el elemento de la posición pos del vector x
5. Se tienen dos números muy grandes( mas de 500 dígitos) hallar la suma de dichos números. Implemente
reutilizando las operaciones necesarias , complete la solución:
ACCION SumaDigitos(Vector x, ENTERO dx, Vector y, ENTERO dy, Vector Z, ENTERO *dz)
// Suma 2 números almacenados en los vectores X y Y y la suma lo almacena en Z
PRE: ¿…?
POS: ¿…?
Implementación:
3
7. Implemente en lenguaje C la siguiente especificación buscar la posición de un elemento en el vector:
ACCION buscarDato1(Vector x, ENTERO dx, TD dato)
//Busca el elemento dato y retorna la posición que ocupa o debe ocupar en el vector X
PRE: x = < > x = <e1, e2 ...,en> / e1< e2< ...,<en dato x[ ]
POS: Si dato <= e1 , pos=0 Si dato >= e1 pos=dx Si dato [e1, en] pos <0, dx>
9. Implemente en lenguaje C la siguiente especificación editar un dato reutilizando las operaciones anteriores
ACCION editarxValor(Vector x, ENTERO dx, ENTERO dato)
//Edita el elemento dato del vector x
PRE: x = < > x = <e1, e2 ...,en> dato [e1, en]
POS: “Vector vacioooo..” x = <e1, e2 ..., en>
10. Implemente en lenguaje C la siguiente especificación eliminar un dato reutilizando las operaciones
anteriores buscar y eliminar por posicion:
ACCION eliminaxValor(Vector x, ENTERO dx, ENTERO dato)
//Elimina el elemento dato del vector X
PRE: x = < > x = <e1, e2 ...,en> dato [e1, en]
POS: “Vector vacioooo..” x = <e1, e2 ..., en-1>
4
21. Se tiene los siguientes algoritmos, analice, determine la traza y diga lo que hace e implemente en lenguaje
C aplicando las buenas practicas, y luego implemente la versión con la estructura de control PARA/for
ACCION xxx (ENTERO x[], ENTERO dimx) ACCION yyy (ENTERO x[], ENTERO dimx)
ENTERO i ← 0, j, min ENTERO i ← 1, j, min
MIENTRAS (i < dimx) MIENTRAS (i < dimx)
min ← i J ← dimx
J ←i+1 MIENTRAS (j < i)
MIENTRAS (j < dimx) SI(x[j] < x[j-1])
SI(x[j] < x[min]) Intercambia(x[j], x[j-1] )
min ← j FIN_SI
FIN_SI j ←j+1
j ←j+1 FIN_MIENTRAS
FIN_MIENTRAS i ←i+1
Intercambia(x[i], x[min ] ) FIN_MIENTRAS
i ←i+1 FIN_ACCION
FIN_MIENTRAS
FIN_ACCION
22. El ordenamiento por mezcla consiste partir el vector por la mitad, ordenar la mitad izquierda, ordenar la
mitad derecha y mezclar las dos mitades ordenadas en un vector ordenado (no utilizar métodos
ordenamiento). Dado el algoritmo analice, determine la traza e implemente en lenguaje C completando
adecuadamente. La interpretación del algoritmo es parte de la pregunta.
ACCION mezclar(dat, izqp, izqu, derp, deru) MIENTRAS( izqa <= izqu)
izqa ← izqp temporal[ind] ← arreglo[izqa]
dera ← derp izqa ← izqa + 1
ind ← izqp ind ← ind +1
MIENTRAS ((izqa <= izqu) y (dera <= deru)) FIN_MIENTRAS
SI (arreglo[izqa] < dat[dera] ) MIENTRAS( dera <= deru )
temporal[ind] <- arreglo[izqa] temporal[ind] <=dat[dera]
izqa ← izqa + 1 dera ← dera + 1
SINO ind ← ind + 1
temporal[ind] <- arreglo[dera] FIN_MIENTRAS
dera ← dera + 1 PARA ind ← izqp HASTA deru
FIN_SI arreglo[ind] ← temporal[ind]
ind ← ind +1 ind ← ind + 1
FIN_MIENTRAS FIN_PARA
FIN_ACCION
23. Implemente los métodos de ordenamiento interno –Capitulo 8- del libro de Osvaldo Cairo de Estructura
de Datos.
Joyanes Aguilar, Luis y Zahonero Martinez, Ignacio (2004). Programación en C, metodología, Algoritmos,
estructura de datos y objetos.McGraw-Hill, 4ta Edicion, Madrid España.