130 likes | 280 Views
Tema 7 Informática Topografía. Estructuras de datos compuestas Objetivos: Conocer el concepto de vector Conocer las operaciones que pueden realizarse con ellos Aplicar ambos conceptos a la resolución de problemas Conocer el concepto de matriz bidimensional y multidimensional.
E N D
Tema 7 Informática Topografía Estructuras de datos compuestas • Objetivos: • Conocer el concepto de vector • Conocer las operaciones que pueden realizarse con ellos • Aplicar ambos conceptos a la resolución de problemas • Conocer el concepto de matriz bidimensional y multidimensional Estructuras de datos
Definición de vector Operaciones con vectores Búsqueda Ordenación Definición de vector de caracteres Operaciones carácter a carácter Funciones de cadenas de caracteres
Tipos de datos • simples • char, int, long int, float, double • compuestos • vector • los datos almacenados son todos del mismo tipo • pueden numerarse • permiten tratamiento homogéneo e implícito (uso de bucles) Estructuras de datos
Definición de vector • Conjunto de datos homogéneos • Tipificación: • Elemento: Cada uno de las unidades que forman el vector • Rango: Cantidad de elementos que contiene • Índice: Número identificativo del elemento Rango = 10 Estructuras de datos
Definición de vector • Declaración tipo vector[RANGO]; • Inicialización int datos[3] = {1,4,8}; • Acceso a los elementos datos[0] = a; a = datos[2]; b = a * datos[N-1] - 5; • Entrada : scanf (“%d”, &datos[0]); • Salida : printf (“%d”, datos[0]); Índice Elemento Estructuras de datos
Programa que genera un vector para almacenar 10 números enteros leídos desde teclado y lo visualiza una vez creado. #include <stdio.h> #define RANGO 10 main () { int numeros[RANGO], i; for (i=0;i< RANGO;i++) { printf ("\n Introduce un numero "); scanf ("%d",&numeros[i]); } for (i=0;i<RANGO;i++) printf("\nEl valor del elemento %d es %d", i+1, numeros[i]); } Estructuras de datos
Búsqueda en vectores • Consiste en determinar: • Qué elemento cumple una determinada condición: • Igual a un valor dado • Si supera un umbral (positivo o negativo) • Otras más sofisticadas • Su posición. Recordar el elemento • Métodos de búsqueda • Secuencial. Se recorren todos los elementos desde el primero hasta el último o hasta el localizado. Cuesta N pasos • Binaria o dicotómica. Partiendo de un vector ordenado mediante algún criterio, se localiza el elemento en log2(N) pasos N es el rango del vector Estructuras de datos
Búsqueda en vectores • Métodos de búsqueda secuencial Programa que sustituya los ceros por unos #define RANGO 100 .... main() { int i, V[RANGO]; .... for (i=0;i<RANGO;i++) if (V[i] == 0) V[i] = 1; .... } Estructuras de datos
Métodos de búsqueda binaria La búsqueda binaria requiere menos comparaciones (iteraciones) que la secuencial pero para realizar la búsqueda se requiere que el vector este previamente ordenado. Estructuras de datos
Búsqueda Binaria Programa que averigüe si existe una persona con un DNI dado #define TOTAL_PERSONAS 100 main() { long i, DNI, Personas[TOTAL_PERSONAS]; printf(“Indique por favor el DNI a liocalizar ”); scanf(“%d”, &DNI); /*comienzo de bloque de búsqueda*/ i = Salto = TOTAL_PERSONAS / 2; while (Salto != 0) { if (V[i] < DNI) i += Salto; /*Hay que buscar valores mayores*/ else if (V[i] > DNI) i -= Salto; /*Buscar valores menores*/ else break; /*se ha encontrado a la persona*/ Salto = Salto / 2; } /*Del while*/ if (Salto != 0) printf(“\nLa persona cuyo DNI = %d, se encuentra en la posición %d\n”, DNI, i); else printf(“\nLa persona solicitada no se encuentra registrada\n”); } /*Del main*/ Estructuras de datos
Vector de caracteres • String o cadena de caracteres • Declaración char nombre_vector[RANGO+1] • Inicialización char ciudad[9] = “Valencia”; char ciudad[] = “Valencia”; char ciudad[30]= “Valencia”; Estructuras de datos
Operaciones carácter a carácter • Asignación char ciudad[5]; … ciudad[0] = ‘L’; ciudad[1] = ‘u’; ciudad[2] = ‘g’; ciudad[3] = ‘o’; ciudad[4] = ‘\0’; • Lectura/Escritura scanf (“%c”, &ciudad[3]); printf (“%c”, ciudad[2]); Estructuras de datos
Funciones de cadenas de caracteres • Lectura/Escritura char ciudad[RANGO]; /*solo una palabra*/ scanf (“%s”, ciudad); printf (“%s”, ciudad); /*una o varias palabras*/ gets (ciudad); puts (ciudad); Estructuras de datos