1 Tipos De Datos Ejercicios

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    1 Tipos De Datos Ejercicios - Presentation Transcript

    1. TIPOS DE DATOS: EJERCICIOS ESTRUCTURAS DE DATOS www.espol.edu.ec www.fiec.espol.edu.ec
    2. 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
    3. 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
    4. 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
    5. 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;
    6. 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;
      • }
    7. 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;
      • }
    8. 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?
    9. 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);
    10. 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;
    11. ARREGLOS DINAMICOS DE PUNTEROS
      • Al declarar por ejemplo:
        • int **A;
      • Es un puntero a puntero a entero.
      • Como podríamos usar esta variable?
      • Que formas habría para manipularla y utilizarla?
    12. EJEMPLO
      • 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;
        • }
      • }
      • int **A;
      • A = malloc(sizeof(int *) * 10);
      • for(i = 0; i <10; i++){
        • A[i] = malloc(sizeof(int));
        • *A[i] = 0;
      • }
    13. 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 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
    14. 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
    15. 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.
    16. 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
    17. EJEMPLOS DE VOID *
      • char car1=‘B’, car2;
      • void *ptg;
      • ptg = &car1;
      • car2 = *((char *)ptg) + 3;
      char cad[20], car3; void *ptg; ptg = cad; strcpy(cad, “Ejemplo”); car3 = *((char *)(ptg) + 3) + 5;
    18. PARA PENSAR
      • Se podría declarar un arreglo de void *?
      • Que utilidad tendría?

    + HannitahHannitah, 11 months ago

    custom

    1998 views, 0 favs, 2 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1998
      • 1996 on SlideShare
      • 2 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 28
    Most viewed embeds
    • 1 views on http://www.toniarcos.blogspot.com
    • 1 views on http://toniarcos.blogspot.com

    more

    All embeds
    • 1 views on http://www.toniarcos.blogspot.com
    • 1 views on http://toniarcos.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories