-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathensilladura.pas
89 lines (84 loc) · 2 KB
/
ensilladura.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
program ensilla;
{Se dice que una matriz tiene un punto de silla si alguna posición
de la matriz es el menor valor de su fila y a la vez el mayor de su columna.
Escribir un programa que tenga como entrada una matriz de números enteros
y calcule la posición de un punto de silla (si es que existe).}
const
lim= 50;
type
matriz = array[1..lim,1..lim] of integer;
var
m:matriz;
n,silla:integer;
procedure llenarmat(var m:matriz;n:integer);
var
i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
writeln('Indica dato posicion [',i,' ',j,']');
readln(m[i,j]);
end;
end;
end;
procedure imprimirmat(m:matriz;n:integer);
var
i,j:integer;
begin
writeln('contenido de la matriz');
for i:=1 to n do
begin
for j:=1 to n do
write(m[i,j],' ');
writeln;
end;
end;
function puntosilla(m:matriz;n:integer): integer;
var
i,j,k,punto, menor,mayor,col:integer;
detener:boolean;
begin
i:=1; col:=1; punto:=-1; detener:=true;
while (i<=n) and (detener = true) do
begin
mayor:=0; menor:=9999999;
j:=1;
while (j<= n) and (detener = true) do
begin
if m[i,j]< menor then
begin
menor := m[i,j];
col:=j;
end;
j:=j+1;
end;
k:=1;
while (k <= n) and (detener = true) do
begin
if m[k,col] > mayor then
mayor := m[k,col];
k:=k+1;
end;
if mayor = menor then
begin
punto:=mayor;
detener:=false;
end;
i:=i+1;
end;
puntosilla := punto;
end;
begin
writeln('Indica cantidad de filas y columnas');
readln(n);
llenarmat(m,n);
imprimirmat(m,n);
silla:=puntosilla(m,n);
if silla <> -1 then
writeln('El punto de silla es: ',silla)
else
writeln('No existe un punto de silla ');
readln;
end.