Está en la página 1de 4

UNIVERSIDAD NACIONAL DE INGENIERIA P.A.

2019-2
FACULTAD DE INGENIERIA MECANICA
DACIBAHCC
EXAMEN FINAL
INTRODUCCION A LA COMPUTACION (BIC01)

• Profesores: Ings. Ricardo Castañeda, Carlos Moreno, Roberto Tello y Máximo Obregón
• Secciones: Todas Duración: 110 minutos Fecha: Lunes, 09 diciembre 2019 Hora: 14-16
• Indicaciones:
o El desarrollo se realiza sin apuntes, ni calculadoras, ni celulares.
o Solo podrá usar las estructuras: if, switch, for, while y arreglos de una y/o dos dimensiones.
o No se debe usar funciones ni operadores de arreglos
o Solo podrá usar las funciones básicas: input, disp, fprintf, mod, rem, ceil, floor, round, fix.
o Se bajará puntos por no tabular las sentencias que están dentro de las estructuras
o Se bajará puntos por redundancia en el código.

Problema 1 (7 puntos): El programa lee 10 valores en un vector (arreglo de una dimensión), si algún
valor leído es repetido, entonces se volverá a leer el dato hasta que no sea repetido. Luego lea una
posición inicial y una posición final para reportar los valores comprendidos entre esas 2 posiciones.
El programa debe ejecutarse exactamente como el ejemplo

Ejemplo:
Ingrese el numero: 6
Ingrese el numero: 5
Ingrese el numero: 8
Ingrese el numero: 9
Ingrese el numero: 7
Ingrese el numero: 6
Valor repetido, ingrese nuevamente
Ingrese el numero: 9
Valor repetido, ingrese nuevamente
Ingrese el numero: 2
Ingrese el numero: 1
Ingrese el numero: 6
Valor repetido, ingrese nuevamente
Ingrese el numero: 5
Valor repetido, ingrese nuevamente
Ingrese el numero: 3
Ingrese el numero: 0
Ingrese el numero: 4
6 5 8 9 7 2 1 3 0 4

Ingrese posicion inicial : 3


Ingrese posicion final : 6
8 9 7 2
Problema 2 (7 puntos): El programa calcula la mediana (valor central) de un conjunto de números
positivos que se generan aleatoriamente. A su vez, estos números generados tendrán una cantidad
determinada de dígitos. Al final, se muestra el vector original ordenado y el valor de la mediana. Así
mismo considere lo siguiente:
• La cantidad de elementos y la cantidad de dígitos de cada número se debe ingresar por teclado al
inicio del programa.
• Recordar que, para el cálculo de la mediana, luego de generados los números aleatorios, los deberá
ordenar.
• Si la cantidad de elementos es impar, la mediana será el valor central de los elementos; y si es
par, entonces será igual a la semisuma de los 2 valores centrales.

Ejemplo 1:
Ingrese total de elementos a procesar: 5
Ingrese cantidad de dígitos de cada número: 2
77 48 43 44 30
30 43 44 48 77
La mediana es: 44.00

Ejemplo 2:
Ingrese total de elementos a procesar: 6
Ingrese cantidad de dígitos de cada número: 3
450 547 296 744 188 686
188 296 450 547 686 744
La mediana es: 498.50

Problema 3 (6 puntos): Genere una matriz de mxn con valores al azar entre [1;9] y muestre la suma
de cada diagonal, de acuerdo al siguiente ejemplo.
Ejemplo:
m=8
n=3
4 6 8
8 8 4
5 7 7
9 2 9
9 8 3
4 1 2
5 4 3
4 7 4

Las sumas de las diagonales son:


4 12 12 13 19 10 24 19 10 8

Los profesores.
SOLUCIONARIO:
Sol prob1:
clc;clear;a=[];
for i=1:10
a(i)=input('Ingrese el numero: ');
if i>1
j=1;
while j<=i
if i~=j
if a(i)==a(j)
fprintf('Valor repetido, ingrese nuevamente\n');
a(i)=input('Ingrese el numero: ');
j=0;
end
end
j=j+1;
end
end
end
disp(a);
ri=input('Ingrese posicion inicial : ');
rf=input('Ingrese posicion final : ');
b=[];
br=rf-ri+1;
for j=1:br
b(j)=a(ri+j-1);
end;
disp(b);

Sol prob2:
clc; clear;
% Ingreso de parámetros:
num = input('Ingrese total de elementos a procesar: ');
dig = input('Ingrese cantidad de dígitos de cada número: ');
% Generación de valores del vector.
i=1;
while i <= num
valor = floor(rand*10^dig);
if valor >= 10^(dig-1) & valor <= 10^dig - 1
vector(i) = valor;
i=i+1;
end
end
disp(vector)
% Ordenamos el vector (Ascendentemente)
for i=1 : num-1
for j=i+1 : num
if vector(i) > vector(j)
aux = vector(i);
vector(i) = vector(j);
vector(j) = aux;
end
end
end
% Cálculo de la mediana.
if mod(num,2) ~= 0
mediana = vector((num+1)/2);
else
mediana = ( vector( num/2 ) + vector((num/2)+1) ) /2;
end
disp(vector)
fprintf('La mediana es: %5.2f \n', mediana)

Sol probl 3:

clc;clear;
m=8;n=3;
A=randi(9,m,n);disp(A)
fprintf(' Las sumas de las diagonales son:\n');
for j=1:n
s=0;
for i=m:-1:1
if j+i-m>=1
s=s+A(i,j+i-m);
end
end
fprintf('%d\n',s);
end
for i=m-1:-1:1
s=0;
for j=n:-1:1
if i+j-n>=1
s=s+A(i+j-n,j);
end
end
fprintf('%d ',s);
end

También podría gustarte