Universidad Tecnológica Nacional Facultad Regional Córdoba Año Académico 2009 Carrera: Ingeniería en Electrónica Cátedra: Informática I Autor: Ing. Rodolfo L. Parache Chaves Responsable de las comisiones 1r1 y 1r7 Documento didáctico del Segundo Examen Final Feb 2009 El siguiente texto es la consigna de trabajo que se entregó a los alumnos el día 12 de febrero de 2009 Aceptar en un arreglo 12 numeros enteros positivos menores a 100 desde teclado y realizar las siguientes funciones: fun1 devuelve la cantidad de numeros pares, fun2 determina si el valor 45 esta presente al menos una vez en el arreglo, en caso afirmativo, fun3 devolvera el valor maximo presente, en caso negativo, fun4 devolvera el valor minimo. Main informara cada resultado y mostrara el arreglo de tres maneras: como lista horizontal, como cuadro de 3 filas y 4 columnas y como cuadro de 4 filas y 3 columnas en la misma pantalla. Utilice solo variables locales, salvo los indices que serán declarados una sola vez como variables globales. A continuación una solución al problema propuesto /* FIN0922 */ /* un arreglo y 4 funciones uso de selectivas */ #include<stdio.h> #include<conio.h> int i,j; void main(void) { int fun1(int*p);/* int fun2(int*p);/* int fun3(int*p);/* int fun4(int*p);/* int arr[12]; cuenta pares */ busca un valor */ busca maximo */ busca minimo */ puts("ingrese 12 numeros enteros positivos"); for(i=0;i<12;i++){ printf("\nvalor %d: ",i+1); scanf("%d",&arr[i]); } clrscr(); printf("El arreglo es el siguiente: \n\n"); for(i=0;i<12;i++) printf(" %2d",arr[i]); printf("\n\nHay %d numeros pares en el arreglo",fun1(arr)); if(fun2(arr)==1) printf("\n\nEl valor 45 esta en el arreglo, valor maximo= %d",fun3(arr)); else printf("\n\nEl valor 45 no esta en el arreglo, valor minimo= %d",fun4(arr)); printf("\n\nCuadro de 3 x 4:\n\n"); for(i=0;i<3;i++) {for(j=0+(4*i);j<4+(4*i);j++) printf(" printf("\n");} printf("\n\nCuadro de 4 x 3:\n\n"); for(i=0;i<4;i++) {for(j=0+(3*i);j<3+(3*i);j++) printf(" printf("\n");} getch(); } int fun1(int *p) { int a,cont=0; for(i=0;i<12;i++){a=*p; if(a%2==0)cont++; p++;} return(cont); } int fun2(int *p) { int cont=0; for(i=0;i<12;i++){if((*p==45))cont=1;p=p++;} return(cont); } int fun3(int *p) { int cont=*p; for(i=0;i<12;i++){if(*p>cont)cont=*p;p=p++;} return(cont); } int fun4(int *p) { int cont=*p; for(i=0;i<12;i++)if(*p<cont)cont=*p;{p=p++;} return(cont); } Corriendo el programa se observa el siguiente resultado en la pantalla: ingrese 12 numeros enteros positivos valor 1: 23 valor 2: 24 valor 3: 23 %2d",arr[j]); %2d",arr[j]); valor 4: 56 valor 5: 67 valor 6: 78 valor 7: 45 valor 8: 78 valor 9: 98 valor 10: 22 valor 11: 11 valor 12: 28 El arreglo es el siguiente: 23 34 23 56 67 78 45 78 98 22 11 28 Hay 7 numeros pares en el arreglo El valor 45 esta en el arreglo, valor maximo= 98 Cuadro de 3 x 4: 23 34 23 56 67 78 45 78 98 22 11 28 Cuadro de 4 x 3: 23 56 45 22 34 67 78 11 23 78 98 28 La siguiente es una lista de acciones que el programa debe realizar; también sirve como lista de cotejo para evaluar los trabajos presentados por los alumnos Acciones • • • • • Declarar cuatro funciones enteras que reciben una dirección. Declarar las variables indicadas en la consigna locales y globales. Declarar un arreglo de enteros cortos. Hacer un ciclo de carga de 12 valores en el arreglo. Desplegar mensajes llamando funciones y tomando el valor de retorno. • En la función: incrementar el puntero adecuadamente y devolver conteos, resultados de búsqueda, etc. En cada caso • Conocimientos necesarios • • • • • • Uso adecuado del operador modulo Uso correcto de índices Estructura de control de flujo para ciclos Estructura de control de flujo selectiva Manejo de expresiones logicas para condicionar operaciones Conocimiento y manejo apropiado de caracteres de conversión en scanf y printf Algoritmos de búsqueda de valor y búsqueda de extremos Algoritmo para presentar valores en pantalla en cuadros • • variables • • • • arr, del arreglo según consigna cont para conteo, o como bandera para indicar resultado de búsqueda p puntero a entero para recibir la dirección en las funciones i,j indice para los ciclo de manejo del arreglo Nota: el autor agradece comentarios y aportes de alumnos y colegas acerca de este ejercicio, la solución propuesta y las anotaciones, a [email protected]