1 Tipos De Datos Ejercicios - Presentation Transcript
TIPOS DE DATOS: EJERCICIOS ESTRUCTURAS DE DATOS www.espol.edu.ec www.fiec.espol.edu.ec
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 tipo int, y con el & se obtiene un valor int *
b = *pta; // pta es de tipo int *, y con el *
se obtiene un valor int
ERRORES
Encuentre los errores en cada línea:
pta = *a; ptb = &pta; pta = 8; ptb = ptb + 3; ptb = &NULL; b = 8; *ptb = b; ptb = a + 10; printf(“%d”, pta + ptb); int *pta, *ptb, a, b; Que pta apunte a a Que ptb apunte al mismo sitio que pta Que pta cambie de contenido a 8 Que ptb cambie de contenido aumentando 3 unidades Que ptb apunte a NULL Que b almacene 8 Que ptb apunte a b Que ptb cambie de contenido a a + 10 Imprima la suma de los contenidos de pta y 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
de memoria el mismo valor que b
RESULTADOS Y ERRORES
Descubra los errores
char *pta, car1;
*pta = car1;
Determine el resultado que almacenan las variables al final
int *ptc, b; b = malloc ( sizeof ( int ) ); *b = 8; ptc = malloc(sizeof(int)); ptc = b+5; free(*ptc); b = *ptc + 10;
int *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 memoria a B para 30 caracteres
Copie 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
Imprima C, que sale en pantalla?
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,
Escriba una función que dado un numero, lo modifique invirtiendo sus dígitos
Escriba una función que dada una matriz de NxN, 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 elementos pares
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: 3x 5 .
Cree una función MultiplicarEscalar que dado un término lo modifica multiplicándolo por un valor entero.
Defina una estructura para representar a un polinomio
Conjunto de n términos
Escriba 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 ImprimirEstudiante(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
0 comments
Post a comment