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
Respuestas a la pregunta
En este programa faltó especificar el lenguaje, pero sigue el código en lenguaje C ya que es uno de los más utilizados para la programación en el nivel requerido por el problema
Empezamos diciendo que M es un tipo de datos fijo, ya que la programación no permite variar el tamaño de los arreglos (se puede armar una estructura de tamaño variable utilizando listas dinámicas pero complejizaría mucho el problema).
#define M //Orden de la Matriz.
int main(void)
{
int n; //Referencia
int i, j,cont1=0, cont2=0; //Variables auxiliares
int inferior, superior; //Limites de rango definidos por el usuario.
int mat[N][N]; //Matriz a llenar
int vecmenor[N];
int vecmayor[N];//Vectores para dividir los valores.
char ud;
printf ("Ingresar la referencia de partición: ");
scanf("%d",&n);//Acá solicio el número N;
printf ("Ingresar limite inferior: ");
scanf("%d",&inferior);//Acá solicio el limite inferior;
printf ("Ingresar limite superior: ");
scanf("%d",&superior);//Acá solicio el limite superior;
//empiezo a llenar la matriz con números aleatorios
for(i=0;i<N;i++)
for(j=0;j<N;j++)
mat[N][N]=random(superior)+inferior;//Random() genera enteros aleatorios entre o y el argumento.
//Ahora divido los valores.
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(mat[N][N]>n)
vecmayor[cont1++]=mat[N][N];//Pongo los mayores a n
else
vecmenor[cont2++]=mat[N][N];//Pongo los menores a n
printf("Hay %d números mayores a n y %d números menores o iguales a n\n", cont1, cont2);
printf("¿Mostrar en forma (a)scendente o (d)escendente?:");
scanf("%c", &ud);//Elijo el orden ascendente o descendente.
if(toupper(ud)=='A'){
printf(vector de menores a n:);
for(i =0;i<n;i++)
printf("%d, ",vecmenor[N]);
printf(vector de mayores a n:);
for(i =0;i<n;i++)
printf("%d, ",vecmayor[N]);
}
if(toupper(ud)=='D'){
printf(vector de menores a n:);
for(i =0;i<n;i++)
printf("%d, ",vecmenor[N]);
printf(vector de mayores a n:);
for(i =0;i<n;i++)
printf("%d, ",vecmayor[N]);
}
}
X2 = X.(Superior - Inferior) + Inferior.
Tanto n, como Superior o Inferior los vas a inicializar en el script. Después es comparar con el doble lazo for anidado:
for i:m
for j:m
if (X2(i)(j)>n)
mayores(end+1) = X2(i)(j);
elsif(X2(i)(j) menores(end+1) = X2(i)(j);
end
end
end,