1. Realice la definición de la función leer( ) y en el main rellene los blancos #include <stdio.h> #include <stdlib.h> struct agenda { char nombre[30]; char apellido[40]; char telefono[10]; }; struct agenda *leer(void); void main(void) { struct agenda *pag; pag = leer(); printf("\n\n%s %s %s \n", pag ->nombre, pag ->apellido, pag ->telefono); free(pag); } struct agenda *leer(void) { struct agenda *pagenda; pagenda = (struct agenda *)malloc(sizeof(struct agenda)); printf("Introduzca el nombre: "); gets(pagenda->nombre); printf("Introduzca el apellido: "); gets(pagenda->apellido); printf("Introduzca el telefono: "); gets(pagenda->telefono); return (pagenda); } 2. Relice la definición de las funciones: #include <stdio.h> struct persona { char nombre[20]; char calle[30]; int edad; }; /* Prototipos de funciones */ void entrada(struct persona *ptr); void imprimir(struct persona ptr); 1 void main() { struct persona p; entrada(&p); //Llamada a la función entrada imprimir(p); //Llamada a la función imprimir } void entrada(struct persona *pp) { puts("\n Entrada de los datos de una persona\n"); printf("Nombre:"); gets(pp->nombre); printf("Calle:"); gets(pp->calle); printf("Edad:"); scanf(“%d”,&pp->edad); } void imprimir(struct persona p) { puts(p.nombre); puts(p.calle); printf(“%d”,p.edad); } 3. Escriba un programa que cree un arreglo dinámico bidimensional de enteros. Lea la primera fila del arreglo y asigne a la segunda fila, los cubos de los datos de la primera fila. Imprima la matriz resultante. Recuerde liberar la memoria creada. #include <stdio.h> #include <stdlib.h> #include <math.h> void main() { int **p = NULL; int f = 0, c = 0, nfilas = 2, ncols; printf("Cuantas columnas tiene el arreglo?:"); scanf("%d",&ncols); /* Asignar memoria para el array de punteros */ if ((p = (int **)malloc(nfilas * sizeof(int *))) == NULL) { printf("Memoria Insuficiente\n"); exit(1); } 2 /* Asignar memoria para cada una de las filas */ for (f = 0; f < nfilas; f++) { if ((ptmatriz[f] = (int *)malloc(ncols * sizeof(int))) == NULL) { printf("Memoria Insuficiente\n"); exit(1); } } /* Lectura de los datos de la Primera Fila */ for ( f = 0; f < 1; f++ ) for ( c = 0; c < ncols; c++ ) { printf("Elemento[%d][%d] = ",f,c); scanf("%d",&p[f][c]); } /* Asignar al array, el cubo de la primera fila a la segunda fila */ for ( f = 1; f < 2; f++ ) for ( c = 0; c < ncols; c++ ) { *(*(p+f)+c) = pow(p[f-1][c],3); } /* Matriz Resultante */ printf("\nMatriz resultante:\n"); for ( f = 0; f < nfilas; f++ ) { for ( c = 0; c < ncols; c++ ) printf("%d\t", *(*(p+f)+c)); printf("\n"); } /* Liberar la memoria asignada a cada una de las filas */ for ( f = 0; f < nfilas; f++ ) free(p[f]); /* Liberar la memoria asignada al array de punteros */ free(p); } 3