
Problema al ejecutar un programa en pascal
Publicado por Victor (1 intervención) el 26/07/2016 04:10:36
Buen día a todos, estoy realizando un programa en pascal el cual consiste en definir una matriz de orden NxM de tipo entero; que acepte valores entre [1..25].
Esta matriz contará con los siguientes procedimientos:
1) esperar: Espera que el usuario introduzca INTRO para continuar.
2) ini_matriz: Inicializa los valores de la matriz pasada como parámetro.
3)impr_matriz: Escribe por pantalla la matriz pasada como parámetro.
4)buscar_en_matriz: Busca el elemento elem en la matriz aaMatriz. Si lo encuentra actualiza encontrado a truey f_elem y c_elem a la fila y la columna de la matriz donde se encontraba dicho elemento. Una vez que encuentre el elemento se deja de buscar. Todos estos valores son pasados como parámetros.
Para finalizar, tras la búsqueda del elemento en la matriz, el programa deberá de informar del resultado de la búsqueda. Si se encuentra el elemento buscado se especificará la posición que ocupaba en la matriz.
Bueno el tema es que el programa ya lo tengo realizado cuando lo compilo en free pascal no me arroja ningún error y la compilación sale como satisfactoria, sin embargo cuando corro el programa me sale un error de "Runtime error 201...".
por favor si alguien me prodría explicar a que se debe dicho error adjunto el programa así como pantallazo de error
program matriz;
const
N = 3;
M = 5;
VALORES = 25;
type
tFilas = 1..N;
tColumnas = 1..M;
tValores = 1..VALORES;
taaMatriz = array[tFilas,tColumnas] of tValores;
var
aaMatriz : taaMatriz;
f : tFilas;
c : tColumnas;
elem : tValores;
encontrado : boolean;
procedure esperar;
(* Espera a que el usuario pulse INTRO *)
begin
Writeln;
write('Pulse INTRO para continuar...');
writeln;
readln
end;
procedure ini_matriz(var aaMatriz : taaMatriz);
(*Inicializa los valores de la matriz pasada como parametro *)
var
f : tFilas;
c : tColumnas;
begin
for f := 1 to N do
for c := 1 to M do
aaMatriz[f,c] := random(VALORES) + 1;
end;
procedure impr_matriz(var aaMatriz : taaMatriz);
var
f : tFilas;
c : tColumnas;
begin
for f := 1 to N do begin
for c :=1 to M do
write(aaMatriz[f,c] : 5);
writeln;
end;
esperar;
end;
procedure buscar_en_matriz(aaMatriz : taaMatriz; elem : tValores; var f_elem : tFilas; var c_elem : tColumnas; var encontrado : boolean);
var
f : tFilas;
c : tColumnas;
begin
f := 1;
encontrado := false;
while((f <= N) and (not encontrado)) do begin
c := 1;
while((c <= M) and (not encontrado)) do begin
if(aaMatriz[f,c] = elem) then begin
encontrado := true;
f_elem := f;
c_elem := c;
end
else
c := c + 1;
end;
f := f + 1;
end;
end;
begin
randomize;
ini_matriz(aaMatriz);
impr_matriz(aaMatriz);
elem := random(VALORES) + 1;
buscar_en_matriz(aaMatriz, elem, f, c, encontrado);
if(encontrado) then begin
write('La primera aparici¢n del elemento ',elem,' en la matriz ');
writeln('ha sido en la fila ',f,' ,columna ',c);
end
else
writeln('El elemento ',elem,' no estaba en la matriz');
esperar;
end.
Esta matriz contará con los siguientes procedimientos:
1) esperar: Espera que el usuario introduzca INTRO para continuar.
2) ini_matriz: Inicializa los valores de la matriz pasada como parámetro.
3)impr_matriz: Escribe por pantalla la matriz pasada como parámetro.
4)buscar_en_matriz: Busca el elemento elem en la matriz aaMatriz. Si lo encuentra actualiza encontrado a truey f_elem y c_elem a la fila y la columna de la matriz donde se encontraba dicho elemento. Una vez que encuentre el elemento se deja de buscar. Todos estos valores son pasados como parámetros.
Para finalizar, tras la búsqueda del elemento en la matriz, el programa deberá de informar del resultado de la búsqueda. Si se encuentra el elemento buscado se especificará la posición que ocupaba en la matriz.
Bueno el tema es que el programa ya lo tengo realizado cuando lo compilo en free pascal no me arroja ningún error y la compilación sale como satisfactoria, sin embargo cuando corro el programa me sale un error de "Runtime error 201...".
por favor si alguien me prodría explicar a que se debe dicho error adjunto el programa así como pantallazo de error
program matriz;
const
N = 3;
M = 5;
VALORES = 25;
type
tFilas = 1..N;
tColumnas = 1..M;
tValores = 1..VALORES;
taaMatriz = array[tFilas,tColumnas] of tValores;
var
aaMatriz : taaMatriz;
f : tFilas;
c : tColumnas;
elem : tValores;
encontrado : boolean;
procedure esperar;
(* Espera a que el usuario pulse INTRO *)
begin
Writeln;
write('Pulse INTRO para continuar...');
writeln;
readln
end;
procedure ini_matriz(var aaMatriz : taaMatriz);
(*Inicializa los valores de la matriz pasada como parametro *)
var
f : tFilas;
c : tColumnas;
begin
for f := 1 to N do
for c := 1 to M do
aaMatriz[f,c] := random(VALORES) + 1;
end;
procedure impr_matriz(var aaMatriz : taaMatriz);
var
f : tFilas;
c : tColumnas;
begin
for f := 1 to N do begin
for c :=1 to M do
write(aaMatriz[f,c] : 5);
writeln;
end;
esperar;
end;
procedure buscar_en_matriz(aaMatriz : taaMatriz; elem : tValores; var f_elem : tFilas; var c_elem : tColumnas; var encontrado : boolean);
var
f : tFilas;
c : tColumnas;
begin
f := 1;
encontrado := false;
while((f <= N) and (not encontrado)) do begin
c := 1;
while((c <= M) and (not encontrado)) do begin
if(aaMatriz[f,c] = elem) then begin
encontrado := true;
f_elem := f;
c_elem := c;
end
else
c := c + 1;
end;
f := f + 1;
end;
end;
begin
randomize;
ini_matriz(aaMatriz);
impr_matriz(aaMatriz);
elem := random(VALORES) + 1;
buscar_en_matriz(aaMatriz, elem, f, c, encontrado);
if(encontrado) then begin
write('La primera aparici¢n del elemento ',elem,' en la matriz ');
writeln('ha sido en la fila ',f,' ,columna ',c);
end
else
writeln('El elemento ',elem,' no estaba en la matriz');
esperar;
end.
- error.rar(34,1 KB)
Valora esta pregunta


0