You are on page 1of 4

Algoritmos y Estructuras de Datos

Irene Zuccar Parrini


1
LABORATORIO N1
Programacin en C: Matrices, Archivos, Recursin e I teracin

Fecha de envo: Domingo 28 abril, 23:59 hrs.
Direccin de envo: alfo704@gmail.com
Ayudante: Alfonso Henrquez
Modalidad: Trabajo Individual


I. Objetivos.

El objetivo del presente laboratorio es evaluar:

1. Su capacidad para llevar a cabo un programa completo en el lenguaje de programacin
C.
2. Generar tipos de datos consistentes y comprender los estilos de implementacin
disponibles en C, particularmente el uso de memoria dinmica, lectura de archivos,
manejo de matrices.
3. Resolver un problema matemtico comn mediante soluciones iterativa y recursiva.


II. Enunciado.

Se debe implementar una solucin iterativa y una recursiva para resolver un sistema de
ecuaciones lineales de n ecuaciones y n incgnitas, a travs de su enfoque matricial.

Ejemplo. El sistema de 3 ecuaciones y 3 incgnitas:

3x
1
+ 2x
2
- 4x
3
= 46
4x
1
+ 3x
2
- 7x
3
= 76
-x
1
+ 6x
2
+ 5x
3
= -18

Se puede representar matricialmente de la siguiente forma Ax = b:



Y la solucin corresponde a x
1
= 2, x
2
= 4 y x
3
= -8.


Algoritmos y Estructuras de Datos
Irene Zuccar Parrini
2
II.1 Entradas:

Los datos de las ecuaciones deben ser ledos desde un archivo de texto con el siguiente
formato:

n
a
11
a
12
a
13
... a
1n
b
1

a
21
a
22
a
23
... a
1n
b
2

a
31
a
32
a
33
... a
3n
b
3


a
n1
a
n2
a
n3
... a
nn
b
n



Donde:
n corresponde al nmero de ecuaciones y de incgnitas
a
ij
son los coeficientes de la matriz A. (con i, j = 1..n)
b
j
corresponden a los valores del vector b. (con j = 1..n)

Para el ejemplo anterior, el archivo de texto correspondiente sera:

3
3 2 -4 46
4 3 -7 76
-1 6 5 -18


II.2 Mtodos:

Para resolver el problema propuesto, puede usar el mtodo de Gauss-Jordan o calcular la
inversa A
-1
, de la matriz A (para realizar el clculo: x = A
-1
b). Para cualquiera de los
mtodos que escoja debe construir una versin iterativa y una recursiva.

II.3 Salida:

La salida debe mostrarse por pantalla y guardarse en un archivo de texto, ambos, con el
siguiente formato:


x1 = <valor de x1>
x2 = <valor de x2>
...
xn = <valor de xn>



Algoritmos y Estructuras de Datos
Irene Zuccar Parrini
3
Siguiendo con el ejemplo, debe mostrarse por pantalla e imprimir en un archivo de texto, lo
siguiente:

x1 = 2
x2 = 4
x3 = -8


II.4 Consideraciones extra:

1. Implemente su programa considerando que el sistema a resolver siempre tendr
solucin y sta ser nica. Esto significa que no evale los casos de infinitas
soluciones, ni de la inexistencia de solucin.

2. Los nombres que maneje para el o los archivos de su cdigo fuente, y para los
archivos de entrada y de salida, los debe especificar usted, y detallar claramente en
el manual de usuario.

3. Debe implementar en lenguaje C (no C++), en forma modular, ordenada, comentada
y con nombres apropiados en sus funciones y variables.

4. Puede trabajar con el IDE y compilador de C, que ms le acomode. No obstante lo
anterior, su cdigo debe poder ser compilado y ejecutado sin problemas en el
establecido en el curso (CodeBlocks).

5. Ante el escenario de existir sospecha de copia (con otros compaeros, o desde
internet), ser interrogado acerca de su trabajo, para aclarar dudas de su
entendimiento y autora. Si se confirma la sospecha, el trabajo ser evaluado con
nota 1.0.


III. Informe.

Debe construir un informe con la siguiente puntos (adems de la portada de presentacin y
tabla de contenidos):

1. Algoritmo iterativo: Debe presentar el algoritmo iterativo principal implementado
y su explicacin (con las referencias correspondientes desde dnde sigui su
implementacin).

2. Algoritmo recursivo: Debe presentar el algoritmo recursivo principal
implementado y su explicacin (con las referencias correspondientes desde dnde
sigui su implementacin).

Algoritmos y Estructuras de Datos
Irene Zuccar Parrini
4
3. Comparacin de tiempos de respuesta: debe presentar una tabla que considere 10
valores distintos para n (entre 2 y 100), indicando los tiempos (en segundos o
fraccin de ellos) de respuesta para ambos mtodos (iterativo y recursivo). Debe
adems, mostrar en un slo grfico (de lnea) la comparacin de ambos mtodos. Se
espera adems, un anlisis escrito de lo observado en ambos mtodos. (NOTA: Si
hubo algn valor de n, para el que su programa recursivo no pudo dar respuesta, ya
sea por espacio en memoria o por exceso de tiempo en la ejecucin, debe sealarlo
en este punto)

4. Manual de usuario: debe poseer una detallada explicacin de la forma en la que se
debe ejecutar su programa, con al menos un ejemplo de lo que se debe esperar como
salida para una entrada determinada.

5. Referencias bibliogrficas: Debe especificar cules fueron los libros/sitios de
internet, en los que bas su trabajo.

Cabe destacar que se tomar en cuenta la presentacin del informe en los siguientes puntos:
Orden de la informacin.
Claridad en la redaccin.
Ortografa.
Uso de fuentes (para la escritura).
Numeracin de pginas.
Alineacin adecuada del texto.


IV. Entrega.

1. Debe enviar un correo al ayudante del curso, en la fecha y horario indicado. Por
cada da (cada 24 horas, a partir del primer minuto de atraso), se descontar de su
nota final 1.5 puntos.

2. En el correo debe adjuntar:
Todos los cdigos fuentes.
El archivo ejecutable (como ltima versin del cdigo fuente enviado).
El informe en formato pdf.

3. Ante la ausencia de alguno de los archivos mencionados en el punto anterior, la nota
del trabajo completo ser un 1.0.

4. La nota final de este laboratorio ser calculado como el promedio de la nota
obtenida en la implementacin y la nota obtenida en el informe.