Domingo 22 de Diciembre de 2024, 21:04
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Ayuda Con Un Programa
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ayuda Con Un Programa (Leído 1628 veces)
batou_kusanagi
Nuevo Miembro
Mensajes: 4
Ayuda Con Un Programa
«
en:
Sábado 25 de Marzo de 2006, 21:33 »
0
Hola. Me han mandado en la facultad realizar este programa
Sea M una matriz cuadrada de 5x5. Se dice que un elemento de M es un punto de silla si es máximo estricto de su fila y mínimo estricto de su columna. Puede demostrarse que dada una matriz de estas características, o bien no tiene punto de silla, o bien éste es único.
Escribe un programa que lea por teclado una matriz de este tipo y decida si tiene o no punto de silla, y en caso afirmativo visualice el valor del punto de silla y la fila y la columna en la que se encuentra dicho punto de silla
y soy incapaz de hacerlo. He probado ya a implementarlo de todas las formas que se me han ocurrido, y he llegado al final a ésta:
Código: Text
program PuntodeSilla;
const
Max=5;
type
t_matriz=array[1..Max,1..Max]of integer;
function mincolum(m:t_matriz;col:integer):integer;
var
i,min:integer;
begin
min:=m[1,col];mincolum:=1;
for i:=2 to Max do
begin
if m[i,col]<min then
begin
min:=m[i,col];mincolum:=i;
end
else if m[i,col]=min then
mincolum:=0;
end;
end;
function maxfila(m:t_matriz;f:integer):integer;
var
i,max:integer;
begin
max:=m[f,1];maxfila:=1;
for i:=2 to Max do
begin
if m[f,i]>max then
begin
max:=m[f,i]; maxfila:=i;
end
else if m[f,i]=max then
maxfila:=0;
end;
end;
procedure comparar(m:t_matriz);
var
fila,c,f:integer;
encontrado:boolean;
begin
encontrado:=false;
fila:=1;
c:=maxfila(m,fila);
f:=mincolum(m,c);
if (fila=f) and not (c=0) then
encontrado:=true;
fila:=fila+1;
while (fila<=max) and not (encontrado) do
begin
c:=maxfila(m,fila);
f:=mincolum(m,c);
if ((fila<>f) or (c=0)) then
begin
fila:=fila+1;
end
else encontrado:=true;
end;
if encontrado=true then
writeln('Punto de silla en la matriz, en la posición ',fila,' ',c,'y con valor ',m[fila,c])
else writeln('No existe punto de silla');
end;
procedure rellenar(var m:t_matriz);
var
i,j:integer;
begin
for i:=1 to Max do
for j:=1 to Max do
begin
writeln('Introduce el valor para ',i,' ',j,' :');
readln(m[i,j]);
end
end;
procedure visualizar(m:t_matriz);
var
i,j:integer;
begin
for i:=1 to Max do
begin
for j:=1 to Max do
write(m[i,j],' ');
writeln
end;
end;
procedure general;
var
m:t_matriz;
begin
rellenar(m);
visualizar(m);
comparar(m);
end;
begin
general;
end.
Al ejecutarla me da un error 216 at $00401066 y no sé qué hacer. ¿Me podéis echar un cable? Os lo agradecería
Tweet
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
Re: Ayuda Con Un Programa
«
Respuesta #1 en:
Viernes 31 de Marzo de 2006, 03:51 »
0
Que extraño!!!!!!!!!!!!!
A MI ME COMPILA
Y Funciona de lo más bien.
(Probé con Delphi y Turbo Pascal 7)
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
Ayuda Con Un Programa