AsignacióN DináMica
-
Upload
adrian-sanchez -
Category
Sports
-
view
1.518 -
download
0
Transcript of AsignacióN DináMica
Asignación DinámicaIng. Paulo Guerra T.
26/Enero/2009
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
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
#include <stdio.h> #include <stdlib.h>
void main() { 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("\ndato[%d]: %d",i,*(p+i)); } }
Ejemplo
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
#include <stdio.h> #include <stdlib.h>
int leer(char texto[100], int min, int max); void ingresar_datos_arreglo(int *p, int num); void imprimir_arreglo(int *p, int num);
void main() { 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("\nGracias... FIN DEL PROGRAMA"); }
int leer(char texto[100], int min, int max) { int valor; do { printf("%s", texto); scanf("%d",&valor); }while(valor<min ||valor>max);
return valor; } void ingresar_datos_arreglo(int *p, int num) { for(int i=0;i<num;i++) { printf("Ingrese un dato: "); scanf("%d",(p+i)); } }
void imprimir_arreglo(int *p, int num) {
for(int i=0;i<num;i++) { printf("\ndato[%d]: %d",i,*(p+i)); }
}
int leer(char texto[100], int min, int max); void ingresar_datos_arreglo(int *p, int num); void imprimir_arreglo(int *p, int num);
void main() { 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("\nGracias... FIN DEL PROGRAMA"); }
int leer(char texto[100], int min, int max) { int valor; do { printf("%s", texto); scanf("%d",&valor); }while(valor<min ||valor>max); return valor; } void ingresar_datos_arreglo(int p[], int num) { for(int i=0;i<num;i++) { printf("Ingrese un dato: "); scanf("%d",&p[i]); } }
void imprimir_arreglo(int *p, int num) { for(int i=0;i<num;i++) { printf("\ndato[%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.
Realizar un programa que permita ingresar n elementos de tipo float determine 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 + d2
2 + d32 + ….+ dn
2 )/(n-1)
(Realizar el ejemplo con funciones y asignación dinámica).
Trabajo en clase
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