C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) OBJETIVOS Explicar los Arreglos. Declarar y definir Vector Declarar y definir Matrices Declarar y definir Arrays Multidimensionales. LABORATORIO 1 Msc. Walter Fernandez Toglio. ARREGLOS (ARRAYS) 1 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) TEMAS Arreglos de 1D o Vectores Arreglos de 2D o Matriz Arreglos Multidimensionales SOFTWARE NECESARIO Dev-C++ 4.9.9.2 http://sourceforge.net/projects/dev-cpp/files/Binaries/ NetBeans IDE C/C++ http://netbeans.org/features/cpp/ Code::Blocks http://www.codeblocks.org/downloads/26 Eclipse C++ http://www.eclipse.org/downloads/packages/eclipse-ide-ccdevelopers-includes-incubating-components/indigosr1 Visual C++ http://www.microsoft.com/visualstudio/eng/products/visual-studioexpress-products Borland C++ http://edn.embarcadero.com/article/20633 Msc. Walter Fernandez Toglio. 2 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) MARCO TEÓRICO Documentación y ejercicios del documento de teoría. Msc. Walter Fernandez Toglio. 3 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) ACTIVIDADES Analizar y explicar el funcionamiento de .cada uno de los ejemplos. ARREGLOS La estructura de datos mas conocida! Secuencias Homogéneas, de tamaño fijo (de cualquier tipo) Acceso aleatorio (Random access) via el operador de indexado - [ ] Inserción y borrado a tiempo constante al final. Los índices comienzan por 0 (primer elemento) El último elemento tiene el índice n-1 EJEMPLO: #include <iostream> const int SIZE = 20; int main() { int i, n; int nums[SIZE]; /*Leer numeros. Parar al leer 0 */ for (n = 0; n < SIZE; ++n) { int input; std::cin >> input; if (input == 0) break; nums[n] = input; } for (i = n-1; i >= 0; --i) std::cout << nums[i]; return 0; } ARRAYS LINEALES Conocido como vector. Son referenciados con un solo indice Ejem: Numero[2], Nombre[5]. EJEMPLO: float Numeros[200]; char Codigo[35]; Msc. Walter Fernandez Toglio. 4 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) ARRAYS MULTIDIMENSIONALES Los arreglos lineales, tambien son conocidos como arreglos unidimensionales, puesto que son referenciados con un solo indice. Aquellos arrays que son referenciados por mas de un indice, se denominan multidimensionales . EJEMPLO: int Empleados[2][5]; //Array de 2 dimensiones. int Empleados[2][5][10]; //Array de 3 dimensiones. Empleado[0][2][5]=345; EJEMPLO: Array 2D #include <iostream> int main() { int a[][2] = {{1,2}, {3,4}, {5,6}}; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 2; ++j) std::cout << a[i][j]; std::cout << std::endl; } return 0; } EJEMPLO: Array 3D #include <iostream> int main() { int a[][3][2] = {{{1,2}, {3,4}, {5,6}}, {{7,8}, {9,0}, {1,2}}}; for (int i = 0; i < 2; ++i){ for (int j = 0; j < 3; ++j){ for (int k = 0; k < 2; ++k) std::cout << a[i][j][k]; std::cout << std::endl; } std::cout << std::endl; } retun 0; } Msc. Walter Fernandez Toglio. 5 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) EJEMPLO Desarrollar un programa que calcule la cantidad de veces que se repite dentro de un arreglo. SOLUCIÓN #include<stdio.h> int main() { int n, i, e, esta; float prom; int A[100]; printf("Ingreso cantidad de datos "); scanf("%d",&n); for(i=0; i<n; i++) { printf("Dato %d = ",i); scanf("%d",&e); A[i] = e; } printf("ingrese elemento a buscar\n"); scanf("%d",&e); printf("Calculando...\n"); esta = 0; for(i=0; i<n; i++) { if(e == A[i]) { esta++; } } printf("Muestra de datos\n"); for(i=0; i<n; i++) { printf("A[%d] = %d\n",i,A[i]); } printf("El elemento %d se encuentra %d veces\n",e,esta); } Msc. Walter Fernandez Toglio. 6 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) EJEMPLO Desarrollar un programa que calcule la UNION, INTERSECCIÓN y DIFERENCIA de 2 vectores dados. SOLUCIÓN #include<stdio.h> void llenar(int A[], int n) { int i; int dato; for(i=0; i<n; i++) { printf("Ingrese dato : "); scanf("%d",&dato); A[i] = dato; } } void mostrar(int A[], int n) { int i; for(i=0; i<n; i++) { printf("Dato[%d] = %d\n",i,A[i]); } } int buscar(int A[], int n, int e) { int i; int esta = 0; for(i=0; i<n; i++) { if(A[i] == e) { esta = 1; } } return esta; } void unionconj(int A[], int n, int B[], int m, int C[],int *k) { int i, j, h,res; for(i=0; i<n; i++) { C[i] = A[i]; } h = n; for(j=0; j<m; j++) { res = buscar(A,n, B[j]); if(res != 1) { C[h] = B[j]; h++; } } *k = h; } Msc. Walter Fernandez Toglio. 7 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) void interconj(int A[], int n, int B[], int m, int C[],int *k) { int i, j, h,res; h = 0; for(j=0; j<m; j++) { res = buscar(A,n, B[j]); if(res == 1) { C[h] = B[j]; h++; } } *k = h; } void difaporb(int A[], int n, int B[], int m, int C[],int *k) { int i, j, h,res; h = 0; for(j=0; j<n; j++) { res = buscar(B,m, A[j]); if(res != 1) { C[h] = A[j]; h++; } } *k = h; } void difbpora(int A[], int n, int B[], int m, int C[],int *k) { int i, j, h,res; h = 0; for(j=0; j<m; j++) { res = buscar(A,n, B[j]); if(res != 1) { C[h] = B[j]; h++; } } *k = h; } int main() { int A[100]; //definir un arreglo int B[100]; //definir un arreglo int C[200]; //definir un arreglo int n,m,e,k; printf("Ingrese cantidad de elementos de A : "); scanf("%d",&n); printf("Ingrese cantidad de elementos de B : "); scanf("%d",&m); printf("Llenando A :\n"); llenar(A,n); printf("Llenando B :\n"); Msc. Walter Fernandez Toglio. 8 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) llenar(B,m); printf("CONJUNTO A :\n"); mostrar(A,n); printf("CONJUNTO B :\n"); mostrar(B,m); unionconj(A,n,B,m,C,&k); printf("CONJUNTO UNION C :\n"); mostrar(C,k); interconj(A,n,B,m,C,&k); printf("CONJUNTO INTER C :\n"); mostrar(C,k); difaporb(A,n,B,m,C,&k); printf("CONJUNTO A-B :\n"); mostrar(C,k); difbpora(A,n,B,m,C,&k); printf("CONJUNTO B-A :\n"); mostrar(C,k); } Msc. Walter Fernandez Toglio. 9 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) EJERCICIOS 1 Leer una matriz de 3 por 3 elementos y calcular la suma de cada una de sus filas y columnas, dejando dichos resultados en dos vectores, uno de la suma de las filas y el otro de las columnas. 2 Calcular la suma de todos los elementos de un array de 3 X 4 X 5, asi como la media aritmetica. 3 Escribir un programa que lea una cadena de caracteres que representa el nombre de una entidad y obtenga como resultado, en otra cadena, el acrónimo de la misma. El programa principal realizará las siguientes operaciones: Declarar una cadena de manera estática y de longitud 100 Leer la cadena con fgets Contar el número de palabras Llamar a la función void ObtenerSiglas(char frase[], char *siglas) Mostrar los resultados por pantalla Ejemplo: Entrada: Tren articulado ligero Goicoechea Oriol Salida: Tren articulado ligero Goicoechea Oriol T.A.L.G.O. 4. Escribir un programa que lea una frase con fgets y calcule el número de letras mayúsculas y el número de letras minúsculas. 5. Escribir un procedimiento que permita imprimir la triangular infierior de una matriz de nxn. 6. Dada una matriz de nxm, que representa n numeros decimales, cada columna representa un numero en donde cada digito esta almacenado en cada casilla. Determinar en que posicion se encuentra el mayor número. Ejemplo si A es de 3x4: 2 0 2 1 2 1 5 3 2 3 5 5 entonces el mayor elemento (255) esta en la posicion 2 7 Se disponen de N temperaturas almacenadas en un array. Se desea calcular su media y obtener el número de temperaturas mayores o iguales que la media. 8 Las notas de un colegio se tiene en una matriz de 30 X 5 elementos (30 número de alumnos y 5 número de asignaturas). Se desea listar las notas de cada alumno y su media. Cada alumno tiene como mínimo 2 asignaturas y máximo cinco, aunque los alumnos no necesariamente todos tienen que tener cinco materias. 9 Se desea realizar un algoritmo que permita controlar las reservas de plazas de un vuelo MADRIDCARACAS, de acuerdo con las siguientes normas de la compañía aérea. Número de plazas del avión:300. Plazas numeradas de 1 – 100 : Fumadores. Plazas numeradas de 101 – 300 : No Fumadores. Msc. Walter Fernandez Toglio. 10 C CE EN NTTR RO OS SU UP PE ER RIIO OR RS SU UP PE ER RIIO OR RD DE EA ALLTTA A E S P E C I A L I Z A C I Ó N Y A S E S O R Í A ESPECIALIZACIÓN Y ASESORÍA http://www.cfape.com P PR RO OG GR RA AM MA AC CIIÓ ÓN NE EN N LLA AP PLLA ATTA AFFO OR RM MA AW WIIN ND DO OW WS S http://www.cfape.com/ P P R O G R A M A C Ó N E N C C N V E B Á S C O C U R S O O N N E PR RO OG GR RA AM MA AC CIIIÓ ÓN NE EN NC C///C C++++++ N NIIIV VE ELLL B BÁ ÁS SIIIC CO O (((C CU UR RS SO OO ON N---LLLIIIN NE E))) Se debe realizar la reserva a petición del pasajero y cerrar la reserva cuando no haya plazas libres o el avión este proximo a despegar. Como ampliación de este algoritmo, considere la opción de anulaciones imprevistas de reservas. Msc. Walter Fernandez Toglio. 11
© Copyright 2024