Necesito saber como diseñar este programa con arreglos en lenguaje de programación Pascal

Necesito saber como diseñar este programa con arreglos, dice así:
"dado un arreglo unidimensional cargado con números enteros positivos, realice un programa en pascal que genere un arreglo bidimensional en paralelo con los primeros diez múltiplos de cada numero del arreglo unidimensional, una vez generado el programan debe ordenar de menor a mayor los números del arreglo unidimensional a la vez que ordene su respectivo grupo de múltiplos"
El programa deberá:
1.Cargar desde el teclado el arreglo unidimensional
2.Generar los 10 primeros múltiplos de cada numero cargado
2.Imprimir las dos tablas
4. Ordenar los dos arreglos de menor a mayor
5. Imprimir las tablas resultante.
E intentato hacerlo pero no me sale como dice ahí... Me cuesta mucho, ¿alguien me podría ayudar u orientar a como hacerlo?.

1 respuesta

Respuesta
1
Ecreon! Bien, son varios problemas a resolver, intentare orientarte lo más que pueda.
La primera interrogante obvia es tener conocimiento de cuando es un número múltiplo de otro:

"Múltiplo de un número natural son los productos del número dado por

{0, 1, 2, 3, 4, 5, 6, 7, . . .}

M1 = {0, 1, 2, 3, 4, 5, . . .}
M2 = {0, 2, 4, 6, 8, 10, . . .}
M3 = {0, 3, 6, 9, 12, 15, . . .}
M4 = {0, 4, 8, 12, 16, 20, . . .}
M5 = {0, 5, 10, 15, 20, 25, . . .}"


Aclarado este punto el siguiente esta en tener conocimiento del manejo de arreglos tanto unidimensionales (vectores) como bidimiensionales (matrices) en pascal.
Para cargar un arreglo unidimensional, basta con recorrer cada una de sus posiciones, e irlas llenando con datos (en este caso solicitados por teclado), de la siguiente manera:

for i:=1 to N do
begin
       writeln('Ingrese el numero nº: ',i);
       readln(x);
       vector:=x;

end;

Vamos ahora a definir bien la salida del programa.
Suponiendo que los números ingresados sean 5, y queremos solo 5 múltiplos:

5  3  1  2  4


El programa deberá arrojar un vector de la siguiente manera:


1  2  3  4  5


Y una matriz:


0  0  0    0    0
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4  8  12  16  20

Para generar los 10 primeros múltiplos de un número, basta con mutiplicarlo por la serie del 1 al 10. A medida que recorremos el vector, vamos llenando la columna de la matriz que correpondera a los múltiplos del número:
for i:=1 to N do
begin
    x := vector; (* obtengo el número del vector *)

   for j:=1 to M do (* recorro la fila correspondiente al numero *)
   begin
           matriz[j,i] :=x*(j-1);  (* el multiplo j-1 del número *)
   end;
end;

Luego de esto, ya tendríamos llena la matriz con los múltiplos de los números cargados en el vector. Lo próximo seria aplicar algún algoritmo de ordenamiento por ejemplo burbuja, aplicado al problema. Cada vez que vayamos a intercambiar un termino del vector con otro, habría que mover entonces toda la columna que corresponda a los múltiplos de ambos números en la matriz.
Eso seria en términos generales la solución al problema planteado.
Cualquier duda no dudes en preguntarme... XD
Nota: Por favor no olvides valorar mi ayuda, dando puntuación a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas