El documento explica cómo asignar memoria dinámicamente mediante la función malloc() para crear arrays dinámicos. Se detalla que malloc() devuelve un puntero al primer byte de memoria asignada según el tamaño especificado. También presenta un ejemplo de programa completo que lee datos en un array dinámico y luego los imprime, utilizando funciones para separar las tareas.
2. Se asigna memoria dinámicamente mediante la función estándar malloc(), para trabajar con esa memoria como si fuera un array. La función malloc () devuelve un puntero genérico al primer byte de una región de memoria del tamaño en bytes determinado en el argumento. Arrays Asignados Dinámicamente
3. Malloc(tamaño) tamaño: indica el numero de bytes a reservar. Si se desea reservar espacio de memoria para 10 elementos de tipo entero: int *p; p=(int *) malloc(10*sizeof(int)); Nota: la función sizeof( argumento) devuelve el numero de bytes que ocupa el argumento. Declaración
4. Ejemplo #include <stdio.h> #include <stdlib.h> voidmain() { int *p,num; printf("Ingrese el numero de elementos a crear: "); scanf("%d",&num); p=(int *)malloc(sizeof(int)*num); for(int i=0;i<num;i++) { printf("Ingrese un dato: "); scanf("%d",(p+i)); } for(i=0;i<num;i++) { printf("dato[%d]: %d",i,*(p+i)); } } recuerde que el puntero p apunta al primer elemento del arreglo y la variable i aumenta el desplazamiento a la siguiente posición de memoria
5. #include <stdio.h> #include <stdlib.h> intleer(char texto[100], int min, intmax); voidingresar_datos_arreglo(int *p, intnum); voidimprimir_arreglo(int *p, intnum); voidmain() { int *p,num; num=leer("Ingrese el numero de elementos a crear: (0-20) ", 0, 20); p=(int *)malloc(sizeof(int)*num); ingresar_datos_arreglo(p,num); imprimir_arreglo(p,num); printf("Gracias... FIN DEL PROGRAMA"); } int leer(char texto[100], int min, intmax) { int valor; do { printf("%s", texto); scanf("%d",&valor); }while(valor<min ||valor>max); return valor; } voidingresar_datos_arreglo(int *p, intnum) { for(int i=0;i<num;i++) { printf("Ingrese un dato: "); scanf("%d",(p+i)); } } voidimprimir_arreglo(int *p, intnum) { for(int i=0;i<num;i++) { printf("dato[%d]: %d",i,*(p+i)); } }
6. int leer(char texto[100], int min, intmax); voidingresar_datos_arreglo(int *p, intnum); voidimprimir_arreglo(int *p, intnum); voidmain() { int *p,num; num=leer("Ingrese el numero de elementos a crear: (0-20) ", 0, 20); p=(int *)malloc(sizeof(int)*num); ingresar_datos_arreglo(p,num); imprimir_arreglo(p,num); printf("Gracias... FIN DEL PROGRAMA"); } int leer(char texto[100], int min, intmax) { int valor; do{ printf("%s", texto); scanf("%d",&valor); }while(valor<min ||valor>max); return valor; } voidingresar_datos_arreglo(int p[], intnum) { for(int i=0;i<num;i++) { printf("Ingrese un dato: "); scanf("%d",&p[i]); } } voidimprimir_arreglo(int *p, intnum) { for(int i=0;i<num;i++) { printf("dato[%d]: %d",i,p[i]); } } Observe que se puede pasar un puntero y recibirlo como un arreglo; esto se puede realizar por que un arreglo de la forma nombre[tamaño] es simplemente un puntero.
7. Realizar un programa que permita ingresar n elementos de tipo floatdetermine el promedio. A continuación el programa debe almacenar en un nuevo arreglo dinámico la desviación con respecto a la media. d= Ai - Ā Por ultimo el programa debe calcular la desviación estándar. s= (d12 + d22 + d32 + ….+dn2 )/(n-1) (Realizar el ejemplo con funciones y asignación dinámica). Trabajo en clase
8. Realizar un programa que permita ingresar una cedula y verifique si la cedula es válida o no. 1002856050 ->Es válida 1000000001-> Es inválida Trabajo en clase