TIPOS DE DATOS EJERCICIOS ESTRUCTURAS DE DATOS RECUERDE
- Slides: 18
TIPOS DE DATOS: EJERCICIOS ESTRUCTURAS DE DATOS
RECUERDE * Y & � Si tengo una variable y �Deseo obtener su dirección de memoria antepongo & � Si tengo un puntero y �Deseo conocer que almacena, antepongo * � Son operadores que permiten conversión de datos int *pta, a=5, b; pta = &a; //a es de obtiene un b = *pta; // pta es se obtiene tipo int, y con el & se valor int * de tipo int *, y con el * un valor int
ERRORES � Encuentre int *pta, *ptb, a, b; los errores en cada línea: Que pta apunte a a pta = *a; Que ptb apunte al mismo sitio que pta ptb = &pta; Que pta cambie de contenido a 8 pta = 8; Que ptb cambie de contenido aumentando 3 unidades ptb = ptb + 3; Que ptb apunte a NULL ptb = &NULL; Que b almacene 8 b = 8; Que ptb apunte a b *ptb = b; Que ptb cambie de contenido a a + 10 ptb = a + 10; Imprima la suma de los contenidos de pta y ptb printf(“%d”, pta + ptb);
EL DESTINO DE UN PUNTERO � Un puntero puede tener dos posibles caminos durante su existencia � Puede “apuntar” a un espacio de memoria de otra variable. int *a, b = 10; a = &b; //a no tiene memoria propia, es un “ESPEJO” de b � Puede “apuntar” a un espacio de memoria propio. Ejemplo int *a, b = 10; a = malloc (sizeof (int)); a = b; //a almacena en su propio cajón
RESULTADOS Y ERRORES � Descubra int *ptc, b; b = malloc ( sizeof ( int ) ); *b = 8; ptc = malloc(sizeof(int)); ptc = b+5; free(*ptc); b = *ptc + 10; los errores char *pta, car 1; *pta = car 1; � Determine el resultado que almacenan las variables alintfinal *ptc, *ptn, b=20; ptc = &b; ptn = malloc ( sizeof (int)); *ptn = b + 15; *ptc = *ptc -1; ptc = ptn; *ptc = 2;
ARREGLOS Y PUNTEROS: RESULTADOS int AE[4] = {4, 1, 5, 2}, *p; int i; p = AE; for(i = 0; i < 4; i++){ p[i] = p[i] + 3; } p = malloc(sizeof(int)*9); for(i = 0; i < 9; i++){ p[i] = 5; }
ARITMETICA DE PUNTEROS: CAMBIAR PROGRAMA � Cambie el código anterior para usar matemática de punteros int AE[4] = {4, 1, 5, 2}, *p; int i; p = AE; for(i = 0; i < 4; i++){ p[i] = p[i] + 3; } p = malloc(sizeof(int)*9); for(i = 0; i < 9; i++){ p[i] = 5; }
ARITMETICA DE PUNTEROS: RESUELVA � Declare un puntero a char llamado B y otro llamado C � Asígnele � Copie memoria a B para 30 caracteres en B una palabra cualquiera � Usando aritmética de punteros, modifique todos los caracteres de la cadena para que pase de minus. a mayus. � Usando aritmética de punteros C debe apuntar al carácter de la mitad de la cadena B
ARITMETICA DE PUNTEROS: RESULTADOS int B[] = {3, 4, 1, 2, 7, 12, -4}; float f = 4. 234, *ptf; *(B+3) = *B + 15; ptf = &f; *B = (int)(*ptf); f = *ptf + 20; *(B + 5) = (int)(*ptf);
ARREGLOS DE PUNTEROS � Un arreglo puede ser de entero, de real, o de puntero a enteros, o puntero a real, etc. � Ejemplo: � int *A[4]; �A es un conjunto de punteros, cada uno puede apuntar a donde desee, �A otras variables o, � Comprar uno o varios cajoncitos propios for(i = 0; i < 3; i++){ A[i] = malloc (sizeof (int) * 3); } A[i] = NULL;
ARREGLOS DINAMICOS DE PUNTEROS � Al declarar por ejemplo: �int � Es **A; un puntero a entero. � Como podríamos usar esta variable? � Que formas habría para manipularla y utilizarla?
EJEMPLO int **A; A = malloc(sizeof(int *) * 10); for(i = 0; i <10; i++){ A[i] = malloc(sizeof(int)); *A[i] = 0; } int **A; A = malloc(sizeof(int *) * 10); for(i = 0; i <10; i++){ A[i] = malloc(sizeof(int)*5); for(j = 0; j<5; j++){ A[i][j] = 6; } }
EJERCICIOS DE REPASO Escriba una función que dado un numero, lo modifique invirtiendo sus dígitos � Escriba una función que dada una matriz de Nx. N, permita conocer si la diagonal esta llena de valores diferentes de 0 y si ese es el caso, calcule la suma de los mismos. � Escriba una función que dado un arreglo, retorne otro nuevo solo con los �
EJERCICIOS DE REPASO Escriba una función recursiva que dada dos cadenas, permita conocer si ambas son iguales. � Escriba una función recursiva que busque un elemento en un arreglo � Escriba una función recursiva que determine si una palabra es o no un palíndromo, sin usar string y usando aritmética de punteros �
EJERCICIOS DE REPASO � Defina una estructura para representar un termino en un polinomio. Ejemplo: 3 x 5. � Cree una función Multiplicar. Escalar que dado un término lo modifica multiplicándolo por un valor entero. � Defina una estructura para representar a un polinomio � Conjunto � Escriba de n términos una función Evaluar para que dado un polinomio de n términos y un valor entero, retorne el valor entero resultante de la evaluación del polinomio.
VOID * � Void significa el vacío, la nada � En lenguaje C puede tener dos usos �Indica que una función no retorna NADA, cuando void es utilizado como tipo de dato de retorno �void Imprimir. Estudiante(Estudiante e); �Como un puntero genérico, cuando es utilizado como puntero (void *) �Un puntero genérico es aquel que puede apuntar a cualquier tipo de dato, sin ningún problema
EJEMPLOS DE VOID * char car 1=‘B’, car 2; void *ptg; ptg = &car 1; car 2 = *((char *)ptg) + 3; char cad[20], car 3; void *ptg; ptg = cad; strcpy(cad, “Ejemplo”); car 3 = *((char *)(ptg) + 3) + 5;
PARA PENSAR � Se podría declarar un arreglo de void *? � Que utilidad tendría?
- Aplicacion de estructuras de datos vectores y matrices
- Estructuras de datos
- Nodos hojas
- Estructura de literario
- Tipos de estructuras gramaticales
- Tipos de estructuras
- Ejercicios resueltos entidad relacion
- Pangunahing datos
- Datos objetivos
- Pilas estructura de datos
- Base de datos consultas
- Algoritmo definicion
- Tipos de datos mysql
- Beatriz beltrán
- Tipos de datos abstractos
- Pseudocodigo
- Tipos de datos abstractos
- Tipos de datos basicos
- Tipos de datos abstractos