Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI-1201 Programación II - 2012b
Profesor Jeisson Hidalgo-Céspedes
. Duración 2 horas
En cada ejercicio se evaluará la eficiencia del código, el uso de identificadores significativos, la indentación, escritura correcta de llaves {} y el uso adecuado de la palabra reservada const. Se dispone de dos horas para entregar la prueba y debe realizarse en forma estrictamente individual.
Escriba en C++ una clase Matriz (o preferiblemente en inglés Matrix) para representar matrices dinámicas de dos dimensiones de valores reales. Se pretende que su clase sea dinámica con el fin de poder leer matrices a partir de archivos sin conocer inicialmente su tamaño. Debe implementar al menos los siguientes miembros.
new double[n][m] no es válida en C++. Debe además diferenciar entre la capacidad de la matriz de la cantidad de valores realmente almacenados en ella."(null)", sin las comillas.Matrix(n,m). Crea una matriz de n filas por m columnas de valores reales inicializados en 0. Se dice que esta matriz tendrá tanto tamaño como capacidad nxm. Si alguno de los valores n ó m son cero, crea una matriz nula.Matrix utiliza memoria dinámica, debe evitar fugas de memoria o accesos inválidos a toda costa.false si es la matriz nula, true en cualquier otro caso. Operador ! se evalúa como true si la matriz es nula, false en cualquier otro caso.rows() y cols(). Retornan la cantidad de filas y columnas actualmente almacenados en la matriz.i y j son válidos. Es decir, si se utilizan valores fuera de rango hará que el programa se caiga. El mismo comportamiento si se invoca este operador en una matriz nulaAnxm + Bnxm es una matriz Cnxm resultado de sumar cada entrada respectiva de ambas matrices. De forma análoga la resta de dos matrices es la resta de sus respectivas entradas. Es decir: $$ A_{n \times m} + B_{n \times m} = C_{n \times m} \Longrightarrow c_{ij} = a_{ij} + b_{ij}$$