Você está na página 1de 4

UNIVERSIDAD AUTÓNOMA METROPOLITANA

UNIDAD CUAJIMALPA

Laboratorio
ESTRUCTURAS DE DATOS
2018-P

Práctica No. 3
Arreglos Dinámicos

Nombre:
A. paterno A. materno Nombre(s)
Fecha:
dd/mm/aaaa

Al término de la práctica el alumno será capaz de:

 Trabajar con arreglos y matrices utilizando memoria estática


 Trabajar con arreglos y matrices utilizando memoria dinámica
Ejercicios

1).- Hacer un programa que lea desde el teclado los datos a(i,j) de una matriz A (de
tamaño n x m) y que los despliegue en pantalla. Desalojar la memoria al final.

 a00 ... a0 j a0 n 
 ... ... ... ... 
A
 ai 0 ... aij ain 
 
an 0 ... anj ann 

2.- Modificar el programa anterior para que el programa principal haga un llamado a las
funciones leermatriz() para pedir los datos, e imprimirmatriz() para imprimirlos en
pantalla. En el programa principal se solicita al usuario el número de renglones n y de
columnas m de la matriz y se aloja la memoria dinámica. Liberar la memoria al final.

Pasar como parámetros la matriz A, el número de renglones y de columnas.

3).- Completa el siguiente programa que calcula el producto punto de dos vectores de
tamaño n, el cual está definido por:

 v1 
v  n
u  v  u1 u2 ... un   2    ui vi
 ...  i 1
 
vn 
#include <cstdlib>
#include <iostream>

using namespace std;

void PideDatosVector( . . ., . . .){


for( int i=0; i<tamanio; i++){
cout << "dato "<< i+1 << "=? ";
cin >> vector[i];
};
}

double productoPunto( . . ., . . ., int n){


double prod=0;
for( int i=0; i<n; i++ )
. . .
return . . .;
}

int main(int argc, char *argv[])


{
int *v, *u, n;

cout << "De que tamaño son los vectores U y V?";


cin >> n;

// Alojamiento de los vectores


cout << " ¿Cuales son los datos del vector u? \n";
PideDatosVector( u, n);
cout << " ¿Cuales son los datos del vector v? \n";
PideDatosVector( . . ., . . . );

cout << "el producto punto de u por v es:"


<< productoPunto(u, v, n);

system("PAUSE");
return EXIT_SUCCESS;
}

4).- Completar el programa que calcula el producto interno de una matriz A de tamaño n
x m por el vector V de tamaño m. El producto interno está dado por:

 a11 a12 ... a1m   v1   a1   a1  v 


a a22    
... a2 m   v2  a 2  a  v 
A  v   21   v   2 
 ... ... ... ...   ...   ...   ... 
       
an1 an 2 ... anm  vm  a n   an  v 
#include <cstdlib>
#include <iostream>

using namespace std;

void PideDatosVector( int *vector, int tamanio){

...
}
void PideDatosMatriz( int ..., int n, int m){

. . .
}

void prodMatrizVector(. . ., . . ., . . ., . . ., . . .){


for( int i=0; i<n; i++ ){
prod[i] = 0;
for( int j=0; j<m; j++ )
. . .
};
}

int main(int argc, char *argv[])


{
int *v, n, m;

cout << "¿De que tamaño es el vector?"; cin>>m;


// Alojar el vector v
v = new int [m];

cout << " ¿Cuales son los datos del vector v? \n";
PideDatosVector( v, m);

int *prodMatrVect, **A;


cout << "La matriz debe tener " << m
<< "columnas. ¿Cuántos renglones tiene?";
cin >> n;
// Alojar el arreglo de apuntadores a int
A = new int *[n];

// Alojar las columnas de A


for( int i=0; i<n; i++)
A[i] = new int [m];

// Alojar prodMatrVect
prodMatrVect = new int[n];

PideDatosMatriz( A, n, m);
prodMatrizVector( A, v, prodMatrVect, n, m);

cout << "El producto de A por v es:\n ";

// Desplegar prodMatrVect
for( int i=0; i<n; i++)
cout << prodMatrVect[i] << endl;

system("PAUSE");
return EXIT_SUCCESS;
}