Вы находитесь на странице: 1из 4

P ROGRAMACIN Y A LGORITMOS

P RCTICA 2
1. P UNTEROS ( CONTINUACIN , RESOLVER USANDO MEMORIA ESTTICA )
1) Escribir un programa que, usando punteros, copie en orden inverso un vector de 20 enteros en otro.
2) Escribir un programa que, usando punteros, copie una cadena de caracteres a 2 cadenas nuevas: una en el
mismo orden y la otra en orden inverso. Imprimir ambas cadenas.
3) Escribir un programa que almacene en un vector 10 estructuras de tipo nmero complejo. Luego, hacer
funciones para: inicialice el vector, imprimir los valores de los nmeros complejos utilizando punteros.
4) Se pide escribir un programa que mantenga la informacin de 10 nmeros complejos. El siguiente cdigo
muestra una solucin propuesta. Explique qu hace. Esquematice grficamente las estructuras de datos usadas
y las variables. Ejemplifique entradas y salidas. Es correcta dicha propuesta para solucionar el problema?
Implementar las funcines leerComplejo() y mostrarComplejo().

UNRN - I NGENIERA E LECTRNICA 1 de 4


P ROGRAMACIN Y A LGORITMOS

Algorithm 1: Punteros
1 #include <stdio.h>
2 #define DIM N

3 typedef struct
4 {
5 int real, imag;
6 } Complex_T;

7 Complex_T leerComplejo(); // lee los campos de un complejo y lo retorna


8 int mostrarComplejo(Complex_T num_c); // muestra los campos del complejo num_c
9 int main()
10 {
11 Complex_T *vector[DIM];
12 Complex_T *p_num;

13 int i;
14 Complex_T num1;
15 // inicializacion del vector de complejos
16 for(i=0; i <DIM; i++)
17 {
18 num1 = leerComplejo();
19 vectorC[i] = &num1;
20 }

21 // impresion del vector de complejos


22 for(i=0; i <DIM; i++)
23 {
24 p_num = vectorC[i];
25 mostrarComplejo(*p_num);
26 }
27 return 0;
28 }

2. M EMORIA D INMICA
Nota: cada vez que se aloca memoria de forma dinmica, recordar liberarla. Uso de libreras stdlib.h
y string.h.
1) Alocar memoria dinmica para 2 complejos, pedir sus valores y mostrar su suma. Implementar con funciones.
2) Explique: qu diferencia hay entre las operaciones malloc(), calloc() y realloc()?. Explique para cada
una el tipo retornado y cada uno de los parmetros que recibe.
3) Realizar un programa que lea un valor del teclado. Alocar en memoria dinmica un vector de enteros de
longitud igual al valor ledo. Inicializar dicho vector con valores aleatorios entre 10 y 20. Imprimir el vector.
Implementar usando funciones.
4) Vector de vectores: realizar un programa que lea un valor. Dicho valor especifica la cantidad de elementos
de un arreglo de vectores de enteros. Para cada posicin del vector, pedir la dimensin del subvector y alocar

UNRN - I NGENIERA E LECTRNICA 2 de 4


P ROGRAMACIN Y A LGORITMOS

memoria para dicho vector. Inicializar toda la estructura y luego, imprimir los datos del vector. Desalocar
memoria de forma correcta. Notar que es necesario mantener la informacin de la dimensin de cada uno de
los subvectores. Una forma de realizarlo es que cada subvector sea una estructura de la forma:

typedef struct
{
int n;
int *vector;
}Vector_T;

donde el campo n de la estructura es la dimensin del vector. El puntero a enteros es el arreglo dinmico con n
posiciones.
5) Explique qu realiza el siguiente programa. Agregue comentarios explicando cada parte del cdigo.
Algorithm 2: Memoria dinmica
1 #include <stdio.h>
2 #include <stdlib.h>

3 int main()
4 {
5 float *pf = NULL;
6 int i, num;
7 do{
8 {
9 printf(Ingrese la dimensin del vector");
10 scanf(" %d", &num);
11 }while(num <1);
12 pf = (float*) calloc(num, sizeof(float));
13 if(pf == NULL)
14 {
15 printf(Error en la asignacion de memoria");
16 return-1;
17 }
18 printf(Ingrese %d valores", num);
19 for(i=0; i<num; i++)
20 {
21 scanf(" %f", &pf[i]);
22 }
23 free(pf);
24 return 0;
25 }
6) Se tiene un arreglo de n elementos enteros (n es ingresado por teclado y se aloca memoria de forma dinmica).
Se inicializa el vector con valores aleatorios entre 0 y 9. Se quiere generar otro arreglo donde estn los elementos
del vector original sin repetir. Escribir un programa que genere el nuevo vector, cuya dimensin slo se conoce
en tiempo de ejecucin. Luego muestre en pantalla ambos vectores.
7) Escriba un programa para generar matrices cuadradas de enteros (el usuario introduce la dimensin por
teclado, todas las matrices generadas tienen el mismo tamao). El programa reserva memoria para el tamao
requerido. Se pide implementar funciones para inicializar matrices: con nmeros aleatorios entre 1 y 9, matriz

UNRN - I NGENIERA E LECTRNICA 3 de 4


P ROGRAMACIN Y A LGORITMOS

simtrica con nmeros aleatorios entre 1 y 9, matriz identidad. Luego, implemente funciones para resolver la
suma, resta, multiplicacin y transpuesta de matrices.
8) Declare una estructura para representar un punto en el espacio tridimensional. Declare un puntero a la
estructura para que tenga la direccin de un array dinmico de n estructuras punto. Utiliza la funcin calloc()
para asignar memoria al array y compruebe que se ha podido asignar la memoria requerida. Escribir luego una
funcin que retorne un puntero a un array de estructuras punto. Los valores de los puntos se ingresan en esa
funcin.

UNRN - I NGENIERA E LECTRNICA 4 de 4

Вам также может понравиться