SoloCodigo

Programación General => Pascal => Mensaje iniciado por: super_eman en Miércoles 15 de Diciembre de 2010, 21:08

Título: procedimientos y funciones sobre una matriz
Publicado por: super_eman en Miércoles 15 de Diciembre de 2010, 21:08
Hola, excelente foro...
Sigo practicando con mis finales, me apareció el siguiente ejercicio:

Escriba un programa en lenguaje Pascal que conste de las siguientes partes:
1.  Un procedimiento que genere una matriz de tama˜no m × n, siendo m y n datos ingresados por el
usuario, de manera que los elementos de dicha matriz sean 0 o 1, elegidos aleatoriamente.
2.  Un función que decida si hay dos columnas en la matriz que son iguales.
3.  Un procedimiento que emita la posición de la columna con mayor cantidad de unos. Si hay más de
una columna con mayor cantidad de unos, emitir la posición de cualquiera de ellas.

Mis intentos de respuestas son:
1) Este procedimiento es sencillo, lo realice de esta manera:
Código: Pascal
  1. procedure matrizmxn(m:integer;n:integer);
  2. begin
  3. (*genera la matriz de 0 y 1*)
  4.  randomize;
  5.  for i:=1 to m do begin
  6.  for j:=1 to n do begin
  7.  a[i,j]:= random(2)
  8.   end
  9.  end
  10. end;
  11.  

Con los otros dos incisos estoy confundido ya que no se como comparar columna a columna no me sale el lazo (me hago nudos  :brickwall: ). Si saben de algún apunte donde hablen de esto o me dan una mano  :beer: , sino seguiré  :comp:  probando.
Gracias y saludos.
Título: Re: procedimientos y funciones sobre una matriz
Publicado por: m0skit0 en Viernes 17 de Diciembre de 2010, 11:05
Para el punto 2, sólo tienes que coger cada columna y comparar cada elemento con los demás de cada columna. Por ejemplo, los elementos de la columna 1 con los de la columna 2, 3, 4... hasta n. Luego los elementos de la columna 2 con los de la 3, 4, 5... hasta n. Y así hasta llegar a la columna n-1.

El punto 3 es mucho más fácil que el 2, y sólo tienes que contar el número de 1s que haya por cada columna y compararlos. Por ejemplo, cuentas los 1s de la columna 1, guardas el valor, cuentas los 1s de la columna 2, si es mayor que los de la columna 1, pues guardas éste, sino dejas el de la columna 1 y así hasta recorrer las n columnas.

Saludos.