La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI-2125 - Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.

Presentaciones similares


Presentación del tema: "Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI-2125 - Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de."— Transcripción de la presentación:

1 Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI-2125 - Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información

2 Elaborado por Fernando Torre - Universidad Simón Bolívar Es programa puede ser dividido en varias secciones 1. Revise el siguiente programa y explique cuál es el resultado. #include #define FILAS 3 #define COLUMNAS 4 void main ( ) { int i,j; int M[FILAS][COLUMNAS]; /* lectura por filas */ for ( i=0; i<FILAS; i++) for ( j=0; j< COLUMNAS; j++) scanf(“%d”, &M[i][j]); /* escribe por columnas */ for ( j=0; j<COLUMNAS; j++) { for ( i=0; i< FILAS; i++) printf(“%5d”,M[i][j]); printf(“\n”); } Declaraciones iniciales Lectura de datos en el arreglo MEscritura de los datos del arreglo M Fin del programa

3 Elaborado por Fernando Torre - Universidad Simón Bolívar Incluye librería estándar de entrada y salida. Define dos constantes simbólicas: FILAS con valor 3 y COLUMNAS con valor 4 Observe que no requiere el signo igual como operador para la asignación. Declara la función mainDeclara las variables enteras i y j Observemos primero la sección con las declaraciones iniciales #include #define FILAS 3 #define COLUMNAS 4 void main ( ) { int i,j; int M[FILAS][COLUMNAS]; Declara el arreglo M de elementos enteros con dimensiones M[3][4]

4 Elaborado por Fernando Torre - Universidad Simón Bolívar Hagámosle un seguimiento a esta sección del programa Note que la lectura de datos para el arreglo M[ i ] [ j ] se realiza por FILAS, donde: se mantiene fijo el valor de la FILA i mientras que el valor de la COLUMNA j varía de 0 a 3. Los índices i y j de M[ i ] [ j ] varían de acuerdo a las instrucciones for, indicando con cuál valor del arreglo M se está trabajando en ese momento. Veamos ahora la sección que efectúa la lectura de datos por filas en el arreglo M /* lectura por filas */ for ( i=0; i < FILAS; i++) for ( j=0; j < COLUMNAS; j++) scanf(“%d”, &M[i][j]); M[0][0]M[0][1]M[0][2]M[0][3] M[1][0]M[1][1]M[1][2]M[1][3] M[2][0]M[2][1]M[2][2]M[2][3] M = i = j = 012 0123 FILA COLUMNA 01230123 Vamos primero paso a pasoVeamos ahora un elemento a la vezFinalmente veamos una fila completa Hasta aquí hemos leído los datos y los hemos almacenado en el arreglo M

5 Elaborado por Fernando Torre - Universidad Simón Bolívar /* escribe por columnas */ for ( j =0; j < COLUMNAS; j ++) { for ( i =0; i < FILAS; i ++) printf(“%5d”,M[i][j]); printf(“\n”); } En la sección previa el arreglo M [ i ] [ j ] fue recorrido por FILAS, es decir horizontalmente. Aquí el arreglo M [ i ] [ j ] es recorrido por COLUMNAS, es decir verticalmente. Observe que el programador utilizó aquí los índices i y j en un orden inverso al que usó para leer los datos: Aquí la j está primero que la i. 012012012 Examinemos ahora la sección que imprime los datos almacenados en el arreglo M M[0][0]M[0][1]M[0][2]M[0][3] M[1][0]M[1][1]M[1][2]M[1][3] M[2][0]M[2][1]M[2][2]M[2][3] M = i = 012 0 FILA COLUMNA 12 3 j =

6 Elaborado por Fernando Torre - Universidad Simón Bolívar /* escribe por columnas */ for ( j =0; j < COLUMNAS; j ++) { for ( i =0; i < FILAS; i ++) printf(“%5d”,M[i][j]); printf(“\n”); } Procedamos ahora a observar el orden en que los datos son impresos M[0][0] M[0][1] M[0][2] M[0][3] M[1][0] M[1][1] M[1][2] M[1][3] M[2][0] M[2][1] M[2][2] M[2][3] “\n” es Salto de línea La matriz que fue introducida con 3 filas y 4 columnas, aparece impresa como de 4 filas y 3 columnas.

7 Elaborado por Fernando Torre - Universidad Simón Bolívar 2. Escriba un programa que inicializa un arreglo de enteros con diez valores y lo imprime en formato de tabla. //Inicialización de un arreglo #include int main() { Note que n se define como un arreglo de 10 enteros. int i, n[ 10 ]; Coloca cero en cada uno de los elementos de n. Imprime el encabezado de la tabla. printf("Elemento \t Valor \n" ); //imprime el arreglo for ( i = 0; i < 10; i++ ) printf("%5d \t\t %3d \n", i, n[i]); Imprime la tabla. return 0; } Termina el programa. //Inicializa el arreglo for ( i = 0; i < 10; i++ ) n[ i ] = 0;

8 Elaborado por Fernando Torre - Universidad Simón Bolívar Este programa imprime 00 10 20 30 40 50 60 70 80 90 Elemento Valor

9 Elaborado por Fernando Torre - Universidad Simón Bolívar 3. Escriba un programa que calcule y almacene el cuadrado de los primeros 100 números positivos. int main ( ) { int cuadrado[101]; int i; /* indice del for */ for ( i=1; i<=100; i++){ cuadrado[i] = i*i; } for ( i=1; i<=100; i++) printf(" El cuadrado de %d es %d \n",i, cuadrado[i]); } Declara un arreglo de 101 elementos, los cien primeros números positivos son de 1 a 100 Calcula el cuadrado de 1 a 100, observe que no asigna valor a n [ 0 ]. Imprime los valores de i y los valores del arreglo desde cuadrado [ 1 ] hasta cuadrado [ 100 ]. Termina el programa

10 Elaborado por Fernando Torre - Universidad Simón Bolívar El cuadrado de1es1 El cuadrado de2es4 El cuadrado de3es9 El cuadrado de4es16 El cuadrado de5es25 El cuadrado de6es36 El cuadrado de7es49 El cuadrado de8es64 El cuadrado de9es81 El cuadrado de10es100 El cuadrado de11es121 El cuadrado de12es144 El cuadrado de13es169 El cuadrado de14es196 El cuadrado de15es225 El cuadrado de16es256 El cuadrado de17es289 El cuadrado de18es324 El cuadrado de19es361 El cuadrado de20es400 El cuadrado de21es441 El cuadrado de22es484 El cuadrado de23es529 El cuadrado de24es576 El cuadrado de25es625 El cuadrado de26es676 El cuadrado de27es729 El cuadrado de28es784 El cuadrado de29es841 El cuadrado de30es900 El cuadrado de31es961 El cuadrado de32es1024 El cuadrado de33es1089 El cuadrado de34es1156 El cuadrado de35es1225 El cuadrado de36es1296 El cuadrado de37es1369 El cuadrado de38es1444 El cuadrado de39es1521 El cuadrado de40es1600 El cuadrado de41es1681 El cuadrado de42es1764 El cuadrado de43es1849 El cuadrado de44es1936 El cuadrado de45es2025 El cuadrado de46es2116 El cuadrado de47es2209 El cuadrado de48es2304 El cuadrado de49es2401 El cuadrado de50es2500 El cuadrado de51es2601 El cuadrado de52es2704 El cuadrado de53es2809 El cuadrado de54es2916 El cuadrado de55es3025 El cuadrado de56es3136 El cuadrado de57es3249 El cuadrado de58es3364 El cuadrado de59es3481 El cuadrado de60es3600 El cuadrado de61es3721 El cuadrado de62es3844 El cuadrado de63es3969 El cuadrado de64es4096 El cuadrado de65es4225 El cuadrado de66es4356 El cuadrado de67es4489 El cuadrado de68es4624 El cuadrado de69es4761 El cuadrado de70es4900 El cuadrado de71es5041 El cuadrado de72es5184 El cuadrado de73es5329 El cuadrado de74es5476 El cuadrado de75es5625 El cuadrado de76es5776 El cuadrado de77es5929 El cuadrado de78es6084 El cuadrado de79es6241 El cuadrado de80es6400 El cuadrado de81es6561 El cuadrado de82es6724 El cuadrado de83es6889 El cuadrado de84es7056 El cuadrado de85es7225 El cuadrado de86es7396 El cuadrado de87es7569 El cuadrado de88es7744 El cuadrado de89es7921 El cuadrado de90es8100 El cuadrado de91es8281 El cuadrado de92es8464 El cuadrado de93es8649 El cuadrado de94es8836 El cuadrado de95es9025 El cuadrado de96es9216 El cuadrado de97es9409 El cuadrado de98es9604 El cuadrado de99es9801 El cuadrado de100es 10000 Este programa imprime

11 Elaborado por Fernando Torre - Universidad Simón Bolívar 4. Corra el siguiente programa y explique lo que sucede #include int main() { int c; char nombre[4][7]={'F','u','l','a','n','o','\0', 'J','u','a','n','\0',' ',' ', 'P','e','d','r','o','\0',' ', 'E','l','i','s','a','\0',' '}; /* El caracter nulo, significa el fin de texto */ printf ("Esto es un mensaje personalizado. \n\n") for (c = 0; c < 4; c++){ printf("Hola %s \n\n",nombre[c]); } Declara el arreglo de caracteres ‘nombre’ y lo inicializa Imprime el título y los elementos que están en el arreglo de caracteres ‘nombre’ Fin del programa

12 Elaborado por Fernando Torre - Universidad Simón Bolívar Este programa saluda a cada uno de los nombres que están en el arreglo de caracteres ‘nombre’ de 4x7. De la siguiente manera: 4. SOLUCIÓN Esto es un mensaje personalizado. Hola Fulanosalta dos líneas, escribe Hola Juansalta 2 líneas, escribe Hola Pedrosalta 2 líneas, escribe Hola Elisay salta 2 líneas.

13 Elaborado por Fernando Torre - Universidad Simón Bolívar 5Escriba un programa que dada una cadena de caracteres fija, imprima la cadena completa, imprima el tercer carácter de la cadena y la subcadena a partir del cuarto carácter. Se define un arreglo de 7 caracteres: cadena [7]y se asigna una letra a cada elemento del arreglo.Imprime toda la cadena de caracteres, con %s. cadena[0]='L'; cadena[1]='e'; cadena[2]='t'; cadena[3]='r'; cadena[4]='a'; cadena[5]='s'; cadena[6]= '\0'; /* Caracter nulo, significa el fin del texto */ printf("La cadena es: %s \n", cadena); #include void main() { char cadena[7]; // Define una cadena de caracteres printf("La subcadena a partir del cuarto caracter es: %s \n", &cadena[ 3 ]); printf("El tercer caracter de la cadena es: %c \n", cadena[ 2 ]); } Imprime el tercer carácter con %c y cadena[2].Imprime a partir del cuarto elemento, con %s.Fin del programa.

14 Elaborado por Fernando Torre - Universidad Simón Bolívar Este programa imprime La cadena es: Letras El tercer caracter de la cadena es: t La subcadena a partir del cuarto caracter es: ras

15 Elaborado por Fernando Torre - Universidad Simón Bolívar 6. El siguiente programa ordena los valores dados de un arreglo de diez elementos en orden ascendente. Analice el programa e indique: ¿ cuál será la salida del programa? #include int main() { const int dimensionArreglo = 10; int a[ dimensionArreglo ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; int i, temp; printf("\nDatos en orden original\n"); for ( i = 0; i < dimensionArreglo; i++ ) printf("%4d",a[ i ]); for ( int pass = 0; pass < dimensionArreglo - 1; pass++ ) //pases for ( i = 0; i < dimensionArreglo - 1; i++ ) // un pase if ( a[ i ] > a[ i + 1]) { // una comparación temp = a [ i ]; // un intercambio a[ i ] = a[ i + 1 ]; a[ i + 1 ] = temp; } printf("\nDatos en orden ascendente\n"); for ( i = 0; i < dimensionArreglo; i++ ) printf("%4d",a[ i ]); printf("\n"); } Declara el arreglo ‘a’ con dimensión 10 y lo inicializaImprime el arreglo ‘a’ en el orden originalOrdena los valores del arreglo ‘a’ utilizando la variable ‘temp’Imprime los valores del arreglo ‘a’ en orden ascendenteFin del programa

16 Elaborado por Fernando Torre - Universidad Simón Bolívar 6. SOLUCIÓN: La técnica utilizada es similar al ordenamiento de burbuja (Bubble sort), pues los valores más pequeños gradualmente “burbujean” hacia la parte más alta del arreglo como las burbujas de aire ascienden en el agua, mientras que los valores más grandes se hunden al fondo del arreglo. La técnica consiste en pasar varias veces por el arreglo.  Con cada paso, se comparan pares sucesivos de elementos.  Si uno de los pares está en orden ascendente ( o son idénticos los valores) se queda tal cual.  Si está en orden descendente se intercambian sus valores en el arreglo. La salida de este programa es: 2 6 4 8 10 12 89 68 45 37 2 4 6 8 10 12 37 45 68 89 Datos en orden original Datos en orden ascendente

17 Elaborado por Fernando Torre - Universidad Simón Bolívar 7. Escriba un programa que llene una matriz de 3 X 3 de valores reales, luego:  Calcule la suma de cada fila y la almacena en un vector  Calcule la suma de cada columna y la almacena en otro vector. Matriz: arreglo de elementos reales con dimensión 3x3 Sum_fila: vector de 3 elementos reales Sum_fila: contiene la suma de cada fila Sum_colum: vector de 3 elementos reales Sum_colum: contiene la suma de cada columna. Para este programa se definen los siguientes elementos de datos:

18 Elaborado por Fernando Torre - Universidad Simón Bolívar #include #define N 3 void main ( ) { float matriz[N][N]; // Entrada float sum_fila[N], sum_colum[N]; // Salida int i,j; for (i=0; i<N; i++){ sum_fila[i]= 0.0; sum_colum[i]= 0.0; } /* Lee los datos para la matriz */ printf("Introduzca los %d elementos de la matriz por fila\n", N*N); for ( i=0; i<N; i++) for (j=0; j<N; j++) scanf("%f", &matriz[i][j]); /* Suma las filas */ for ( i =0; i <N; i++) for ( j =0; j <N; j++) sum_fila[i] = sum_fila[i]+matriz[i][j] ; /* Suma las columnas */ for ( j =0; j <N; j++) for ( i =0; i <N; i++) sum_colum[j] = sum_colum[j] + matriz[i][j] ; /* Imprime las sumas de cada fila y cada columna */ for (i=0; i<N; i++) printf("La suma de la fila %d es: %5.2f y la suma de la columna %d es: %5.2f \n", i,sum_fila[i],i, sum_colum[i]); } Definiciones iniciales y declaración de variablesInicializa los arreglos sum_fila y sum_colum a ceroLee los datos y los almacena en el arreglo matrizRecorre cada fila y almacena la suma en sum_filaRecorre cada columna y almacena la suma en sum_columnImprime la suma de cada fila y de cada columnaFin de programa

19 Elaborado por Fernando Torre - Universidad Simón Bolívar Interacción con el programa 1 2 3 4 5 6 7 8 9 Primero el programa solicita al usuario los datos para llenar la matriz, para ello hemos introducido unos datos de prueba, y luego se muestran los resultados para esos datos: La suma de la fila 0 es: 6.00 y la suma de la columna 0 es: 12.00 La suma de la fila 1 es: 15.00 y la suma de la columna 1 es: 15.00 La suma de la fila 2 es: 24.00 y la suma de la columna 2 es: 18.00 Introduzca los 9 elementos de la matriz por fila


Descargar ppt "Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI-2125 - Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de."

Presentaciones similares


Anuncios Google