Examen Final 12-02-09. - Universidad Tecnológica Nacional

Anuncio
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]
Descargar