Sunteți pe pagina 1din 4

PRUEBA 3 DE INTRODUCCIN A LA PROGRAMACIN

1. Realizar un programa con una funcin que reciba un nmero entero y determine la mayor potencia de 2 que divida el nmero
exactamente. Por ejemplo, si la funcin recibe el nmero 24 la mayor potencia ser 2
3
= 8, porque 24/8 = 3. (3 puntos)

PROGRAMA MAXIMA_POTENCIA;
VAR
N, P: ENTERO;

PROCEDIMIENTO LEER_ENTERO(VAR DATO:ENTERO);
VAR
X: REAL;
INICIA LEER_ENTERO
REPETIR
ESCRIBIR (Digite un nmero entero: );
LEERYSALTAR(X);
SI (FRAC(X) <> 0) ENTONCES
ESCRIBIRYSALTAR(ingrese un nmero entero)
HASTA_QUE (FRAC(X) = 0);
DATO TRUNCA(X)
FIN_PROCEDIMIENTO LEER_ENTERO;

FUNCION POT2(X:ENTERO): ENTERO;
VAR
CONT: ENTERO;
INICIA POT2
CONT 0;
MIENTRAS X MOD 2 = 0 HACER
PROCESO CUENTA
CONT = CONT + 1;
X X DIV 2
FIN_PROCESO CUENTA;
POT2 CONT
FIN_FUNCION POT2;

INICIA MAXIMA_POTENCIA;
ESCRIBIRYSALTAR(Programa para calcular la mxima potencia de 2);
ESCRIBIRYSALTAR
ESCRIBIR(Digite un numero entero: );
LEER_ENTERO (N);
P POT2(N);
ESCRIBIRYSALTAR(La mayor potencia de 2 divisor de , N, es , 2^P);
FIN PROGRAMA MAXIMA_POTENCIA;



2. Escriba un programa en Pseudo - Cdigo para calcular la mediana de un arreglo de nmeros enteros que se lee por teclado
inicialmente no ordenado. El programa debe tener TRES PROCEDIMIENTOS: un procedimiento para leer el vector desordenado hasta
que se ingrese el nmero 999. Un segundo procedimiento para ordenar el vector y un tercer procedimiento para imprimir tanto el
vector desordenado y el ordenado en diferentes instancias. El programa principal deber calcular e imprimir la Mediana.

La mediana de un arreglo ordenado de nmeros se puede definir as:

- Para un nmero impar de elementos, es el que est en la casilla central.
- Para un nmero par, es el promedio. de los que se hallan en las casillas adyacentes a la mitad.

As, la mediana de un arreglo ordenado de 2 5 nmeros es el nmero en la casilla trece, mientras que para un arreglo de 24 nmeros es
el promedio de los nmeros situados en las casillas doce y trece.

PROGRAMA MEDIANA;
CONST
TF = 100;
TIPO
VECTOR=ARREGLO[1..TF] DE ENTERO;
VAR
A:VECTOR;
N:ENTERO;
M:REAL; (* para almacenar la mediana *)

PROCEDIMIENTO LEER_ENTERO(VAR DATO:ENTERO);
VAR
X: REAL;
INICIA LEER_ENTERO
REPETIR
ESCRIBIR (Digite un nmero entero: );
LEERYSALTAR(X);
SI (FRAC(X) <> 0) ENTONCES
ESCRIBIRYSALTAR(ingrese un nmero entero)
HASTA_QUE (FRAC(X) = 0);
DATO TRUNCA(X)
FIN_PROCEDIMIENTO LEER_ENTERO;

PROCEDIMIENTO LEER_VECTOR(VAR N:ENTERO; VAR X:VECTOR; TF:ENTERO);
VAR
CONT, DATO: ENTERO;

INICIA LEER_ VECTOR
CONT 0;
REPETIR
ESCRIBIR(Digite un nmero entero: );
LEER_ENTERO (DATO)
SI DATO <> 999 ENTONCES
PROCESO LECTURA
CONT CONT + 1;
X[CONT] DATO
FIN_PROCESO LECTURA
HASTA_QUE (DATO = 999) O (CONT > TF);
N CONT
FIN PROCEDIMIENTO LEER_ VECTOR;

PROCEDIMIENTO IMPRIMIR_VECTOR(N:ENTERO; X:VECTOR);
VAR
I: ENTERO;
INICIA IMPRIMIR_VECTOR
PARA I 1 A N HACER
ESCRIBIR(X*I+, );
FIN PROCEDIMIENTO IMPRIMIR_VECTOR;

PROCEDIMIENTO ORDENAR(VAR X:VECTOR; N:ENTERO); (*BURBUJA SIMPLIFICADO*)
VAR
P, J: ENTERO;
TEMP: ENTERO;
ORDENADO: LOGICO;
INICIA ORDENAR
ORDENADO FALSO;
P 1;
MIENTRAS (P<N) Y NO ORDENADO HACER
PROCESO BURBUJEO
ORDENADO VERDADERO;
PARA J 1 A N P) HACER
SI (X[J] > X[J+1]) ENTONCES
PROCESO INTERCAMBIAR
TEMP X[J];
X[J] X[J+1];
X[J+1] TEMP;
ORDENADO FALSO;
FIN PROCESO INTERCAMBIAR;
P P + 1
FIN_PROCESO BURBUJEO
FIN PROCEDIMIENTO ORDENAR;

INICIA MEDIANA
ESCRIBIRYSALTAR(PROGRAMA PARA CALCULAR LA MEDIANA DE UN ARREGLO);
LEER_VECTOR(N, A, TF)
ESCRIBIRYSALTAR(EL VECTOR INGRESADO ES: );
IMPRIMIR(N, A);

ORDENAR(N, A);
ESCRIBIRYSALTAR(EL VECTOR ORDENADO ES: );
IMPRIMIR(N, A);
(*En las siguientes lneas se calcula la mediana *)

SI N MOD 2 = 0 ENTONCES
M (A[N DIV 2] + A[N DIV 2 + 1])/2
CASO_CONTRARIO
M A[N DIV 2 + 1];
ESCRIBIRYSALTAR(La mediana es: , M);

ESCRIBIRySALTAR(Hecho)
FIN PROGRAMA MEDIANA.

S-ar putea să vă placă și