Está en la página 1de 5

PASO 4 PRACTICA 2

Yohana Rocio Bastidas Martínez


203036-48
Tutor: Alexander Flórez
Octubre 2019

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA


PROGRAMA DE INGENIERIA ELECRONICA
SOFTWARE PARA INGENIERIA
1. Realice un programa que genere una matriz cuadrada de números aleatorios de orden “m” en
un rango de números determinado por el usuario, dicha matriz debe descomponerla en dos
vectores, uno de números mayor que “n” y otro de números menores que “n”, donde “n”,
igualmente lo determina el usuario al igual que la definición de la impresión ascendente o
descendente de los vectores. Debe también informar al usuario la cantidad de números mayores
y menores a n

Ejemplo:
Datos que ingresa el usuario
m: 4
Rango de datos: 10-50
n: 23
Orden vector de mayores de n: Ascendente
Orden vector de menores de n: Descendente
Matriz generada por el aplicativo

19 18 17 19
45 23 24 35
23 18 11 34
32 23 12 22
Datos que muestra el aplicativo

Vector de números mayores de 23


Para un total de 5 números mayores de 23
24 32 34 35 45

Vector de números menores de 23

22 19 19 18 18 17 12 11
Para un total de 8 números menores de 23

Solución:

El programa se desarrolló en Scilab, utilizando vectores, ciclos FOR, condicionales IF, como se
muestra a continuación:

function [vector_mayores, vector_menores]=generar_matriz(ord, li, lsup, num) //función que


genera y rellena la matriz
mat = 1:1//iniciando matriz
vector_mayores = 0
vector_menores = 0
for i=1:ord
for j=1:ord
mat(i,j)=int((lsup-li)*rand())+li //se genera el numero aleatorio y se le suma el limite
inferior
end
end
mayores = 1:1//inicializando vector de mayores y menores
menores = 1:1
may_count = 1//contadores de menores y mayores encontrados
men_count = 1
for i=1:ord//ciclo para filtrado de numeros mayores y menores
for j=1:ord
if mat(i,j)<num
menores(men_count)=mat(i,j)
men_count = men_count+1
end
if mat(i,j)>num
mayores(may_count)=mat(i,j)
may_count = may_count+1
end
end
end
vector_mayores = ordenar_asc(mayores) //se llama a la función que ordena el vector de
mayores de forma ascendente
vector_menores = ordenar_des(menores) //se ordena el vector de menores de forma
descendente
endfunction

function vector=ordenar_asc(vector) //función que recibe un vector y devuelve el mismo vector


ordenado ascendentemente
desorden =%t //variable de control de ciclo
while desorden
ban = 0 //bandera para guardar el siguiente número a ordenar
for i=1:length(vector)-1
if vector(i)>vector(i+1)
ban=i
break
end
end
if ban == 0
desorden=%f //si ban=0 ya está ordenado porque recorrió todo el vector sin encontrar un
numero en desorden
else
aux = vector(ban) //guarda en aux el valor del numero desordenado
vector(ban) = vector(ban+1)
vector(ban+1) = aux
end
end
endfunction

function vector_ordenado=ordenar_des(vector_desordenado)
vector_desordenado = ordenar_asc(vector_desordenado)
len = length(vector_desordenado)
for i=1:length(vector_desordenado)
vector_ordenado(len-(i-1))=vector_desordenado(i)
end
endfunction
seguir = %t //variable de control de menú
while seguir
orden = input('Ingrese el orden de la matriz:')//recibe datos por teclado
liminf = input('Ingrese el limite inferior del rango a tomar:')
limisup = input('Ingrese el limite superior del rango a tomar:')
numero = input('Ingrese el numero de referencia:')
[mayores,menores] = generar_matriz(orden,liminf, limisup,numero)//se generan los vectores
printf('mayores que %d:', numero)
disp(mayores)
printf('para un total de %d numeros.\n\n', length(mayores)) //donde haya un %d se reemplazara
con los valores luego de la coma, ejemplo printf(numero %d, 8) imprime, numero 8
printf('menores que %d:', numero)
disp(menores)
printf('para un total de %d numeros.', length(menores))
resp = input('si desea continuar escriba [si]]:','s')
if resp<>"si"
seguir = %f
end
end

Ahora se prueba el programa a nivel de usuario: Como el programa saca números aleatorios a veces
éstos se pueden repetir.

Otro ejemplo:
El link del video en youtube es: https://youtu.be/byNmB_KPVHg

También podría gustarte