Pascal/Turbo Pascal - Ayuda con arreglos Bidimensionales....

 
Vista:

Ayuda con arreglos Bidimensionales....

Publicado por Arkangel (3 intervenciones) el 13/11/2011 17:38:07
Hola, Buen día a todos..
Resulta que en el colegio me mandaron una tarea pero no pude asistir a esa clase, es sobre los arreglos bidimensionales o matrices...la tarea consiste en:

Realizar un programa en Pascal que llene una matriz (N x M) de números enteros, luego los ordene e indique cual es el número mayor y menor.

Los números son los siguientes:

7 | 10 | 4 | 2
1 | 2 | 2 | 2
8 | 1 | 5 | 2

y la otra matriz:

3 | 4 | 5 | 6
15 | 2 | 3 | 6
7 | 8 | 10 | 15

Serían dos matrices de 3 filas x 4 columnas al parecer.

Muchas gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con arreglos Bidimensionales....

Publicado por ramon (2158 intervenciones) el 13/11/2011 21:23:11
{Te valdrá esto}

program arraglos;
uses
crt;
type
matriztipo = array[1..12] of integer;
const
arreglo1 : array[1..3,1..4] of integer = (
(7,10,4,2),
(1,2,2,2),
(8,1,5,2));

arreglo2 : array[1..3,1..4] of integer = (
(3,4,5,6),
(15,2,3,6),
(7,8,10,15));

var
matriz1 : matriztipo;
matriz2 : matriztipo;
x, y : integer;
minmaz1, maxmaz1 : integer;
minmaz2, maxmaz2 : integer;
salir : boolean;
tecla : char;

procedure rellenamatriz(cual : integer);
var
v, s, x1, y1 : integer;
begin
if cual = 1 then
begin
x1 := 10;
y1 := 4;
for v := 1 to 3 do
for s := 1 to 4 do
begin
gotoxy(x1, y1);write('Entrada [',v,']','[',s,'] ');
readln(arreglo1[v][s]);
y1 := y1 + 1;
end;
end;
if cual = 2 then
begin
x1 := 10;
y1 := 4;
for v := 1 to 3 do
for s := 1 to 4 do
begin
gotoxy(x1, y1);write('Entrada [',v,']','[',s,'] ');
readln(arreglo2[v][s]);
y1 := y1 + 1;
end;
end;
end;

procedure presentamatriz1;
var
n : integer;
begin
n := 1;
for x := 1 to 3 do
for y := 1 to 4 do
begin
matriz1[n] := arreglo1[x][y];
n := n + 1;
end;
end;

procedure presentamatriz2;
var
n : integer;
begin
n := 1;
for x := 1 to 3 do
for y := 1 to 4 do
begin
matriz2[n] := arreglo2[x][y];
n := n + 1;
end;
end;

procedure ordena(entra : integer; mat : matriztipo);
var
ausil : integer;
i, e : integer;
begin
ausil := 0;
for i := 1 to 11 do
for e := 12 downto i + 1 do
if mat[e - 1] > mat[e] then
begin
ausil := mat[e];
mat[e] := mat[e - 1];
mat[e - 1] := ausil;
end;
if entra = 1 then
begin
writeln;
for i := 1 to 12 do
write(mat[i],' ');
writeln;
write('Enla Matriz N§ 1 el Min es[ ',mat[1],' ]',' El Max es[ ',mat[12],' ]');
writeln;
end;
if entra = 2 then
begin
writeln;
for i := 1 to 12 do
write(mat[i],' ');
writeln;
write('Enla Matriz N§ 2 el Min es[ ',mat[1],' ]',' El Max es[ ',mat[12],' ]');
writeln;
end;
end;

begin
clrscr;
gotoxy(3,2);write('Desea Ver La Actual o Entrar Nuebos Valores [A/N]');
salir := false;
repeat
tecla := readkey;
if tecla in['a','A'] then
begin
salir := true;
end;
if tecla in['n','N'] then
begin
clrscr;
gotoxy(1,1);write('MATRIZ N§ 1');
writeln;
rellenamatriz(1);
clrscr;
gotoxy(1,1);write('Desea Rellenar la Matriz N§ 2 [S/N]');
repeat
tecla := readkey;
until tecla in['s','S','n','N'];
clrscr;
if tecla in['s','S'] then
begin
clrscr;
gotoxy(1,1);write('MATRIZ N§ 2');
writeln;
rellenamatriz(2);
salir := true;
end
else
begin
salir := true;
end;
end;
until salir = true;
clrscr;
presentamatriz1;
presentamatriz2;
ordena(1,matriz1);
ordena(2,matriz2);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con arreglos Bidimensionales....

Publicado por Arkangel (3 intervenciones) el 14/11/2011 00:40:49
La verdad muchisisimas gracias Ramon, pero nomás pediré una cosa más y listo. Podrías arreglarle algunas lineas de comentarios al codigo explicando lo que hacen las funciones, porque estoy tratando de entenderlas pero hay un par que no me quedan muy claro..y tengo esta linea de error:

prog.pas:3: error: module/unit interface `crt' could not be imported

Muchas gracias de antemano!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con arreglos Bidimensionales....

Publicado por ramon (2158 intervenciones) el 14/11/2011 18:05:22
{primera referido a unit crt estas con free pascal en modo win32 si es asín en use aparte
de wincrt tienes que poner también la crt o sea uses crt, wincrt.
o la unidad te falta pues no la encuentra o sea no la carga.
lo demas si me preguntas por los procedimientos te aclaro:

procedure rellenamatriz(cual : integer); {Este es para entrar los valores a los arrays [cual le indica
sies el array 1 o 2}

procedure presentamatriz1; y procedure presentamatriz2; {son para cargar las matrizes bidimensionales en una matriz simple para ordenarlas }

procedure ordena(entra : integer; mat : matriztipo);{ ordena las matriz y presenta los numeros
mayores y menores de la matriz bidimensional}

si deseas mas aclaraciones dime las concreta mente cuales son y te aclarare mas }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con arreglos Bidimensionales....

Publicado por Arkangel (3 intervenciones) el 14/11/2011 23:51:27
Hola Ramon, de nuevo muchisimas gracias.

En mi colegio trabajamos con el compilador GPC, tal vez por eso he estado obteniendo esa cantidad de errores.

De nuevo gracias por tu ayuda, pero podría contactarte por correo para enviarte un código que tengo el cuál al parecer tiene un error de "value out of range (error #300 at 804a196)"..que no he podido descifrar...si me das una mano amigo?

De nuevo muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con arreglos Bidimensionales....

Publicado por ramon (2158 intervenciones) el 16/11/2011 18:52:11
Si tienes alguna duda te la podre intentar solucionar por aquí no por correo particular pues esto es para todo los que quieran aprender mas de pascal por medio de ayuda.
pero el error que me marca es ta dado por que el dato que entras es de mayor rango que la variable
asignada con prueba el rango de ella.
Si es integer pásala a word o longint, y si es array estas excediendo del valor del array.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con arreglos Bidimensionales....

Publicado por manuel (2 intervenciones) el 26/02/2016 12:07:30
Hola, necesito un ejemplo de un arreglo bidimensional de 2x2 en pascal, me podrían mandar ejemplos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con arreglos Bidimensionales....

Publicado por Manuel (2 intervenciones) el 26/02/2016 12:11:31
Hola, por favor necesito que me envíen un ejemplo de un programa en pseudocódigo que multiplique 20 elementos de un arreglo, haciendo uso de punteros. Muchas gracias si me ayudan pues lo necesito para la universidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar