• Domingo 17 de Noviembre de 2024, 19:46

Autor Tema:  Ayuda Con Un Programa  (Leído 1614 veces)

batou_kusanagi

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
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
  1. program PuntodeSilla;
  2. const
  3. Max=5;
  4. type
  5. t_matriz=array[1..Max,1..Max]of integer;
  6.  
  7. function mincolum(m:t_matriz;col:integer):integer;
  8. var
  9. i,min:integer;
  10. begin
  11. min:=m[1,col];mincolum:=1;
  12. for i:=2 to Max do
  13. begin
  14. if m[i,col]<min then
  15. begin
  16. min:=m[i,col];mincolum:=i;
  17. end
  18. else if m[i,col]=min then
  19. mincolum:=0;
  20. end;
  21. end;
  22.  
  23. function maxfila(m:t_matriz;f:integer):integer;
  24. var
  25. i,max:integer;
  26. begin
  27. max:=m[f,1];maxfila:=1;
  28. for i:=2 to Max do
  29. begin
  30. if m[f,i]>max then
  31. begin
  32. max:=m[f,i]; maxfila:=i;
  33. end
  34. else if m[f,i]=max then
  35. maxfila:=0;
  36. end;
  37. end;
  38.  
  39.  
  40. procedure comparar(m:t_matriz);
  41. var
  42. fila,c,f:integer;
  43. encontrado:boolean;
  44. begin
  45.      encontrado:=false;
  46.      fila:=1;
  47.      c:=maxfila(m,fila);
  48.      f:=mincolum(m,c);
  49.      if (fila=f) and not (c=0) then
  50.         encontrado:=true;
  51.      fila:=fila+1;
  52.      while (fila<=max) and not (encontrado) do
  53.            begin
  54.                 c:=maxfila(m,fila);
  55.                 f:=mincolum(m,c);
  56.                 if ((fila<>f) or (c=0)) then
  57.                    begin
  58.                    fila:=fila+1;
  59.                    end
  60.                 else encontrado:=true;
  61.            end;
  62.      if encontrado=true then
  63.         writeln('Punto de silla en la matriz, en la posición ',fila,' ',c,'y con valor ',m[fila,c])
  64.         else writeln('No existe punto de silla');
  65. end;
  66.  
  67. procedure rellenar(var m:t_matriz);
  68. var
  69. i,j:integer;
  70. begin
  71. for i:=1 to Max do
  72.     for j:=1 to Max do
  73.     begin
  74.     writeln('Introduce el valor para ',i,' ',j,' :');
  75.     readln(m[i,j]);
  76.     end
  77. end;
  78.  
  79. procedure visualizar(m:t_matriz);
  80. var
  81. i,j:integer;
  82. begin
  83. for i:=1 to Max do
  84. begin
  85. for j:=1 to Max do
  86. write(m[i,j],' ');
  87. writeln
  88. end;
  89. end;
  90.  
  91. procedure general;
  92. var
  93. m:t_matriz;
  94. begin
  95. rellenar(m);
  96. visualizar(m);
  97. comparar(m);
  98. end;
  99.  
  100. begin
  101. general;
  102. end.
  103.  

Al ejecutarla me da un error 216 at $00401066 y no sé qué hacer. ¿Me podéis echar un cable? Os lo agradecería  :smartass:

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Ayuda Con Un Programa
« Respuesta #1 en: Viernes 31 de Marzo de 2006, 03:51 »
0
Que extraño!!!!!!!!!!!!!
 
A MI ME COMPILA  :scream:

Y Funciona de lo más bien.

(Probé con Delphi y Turbo Pascal 7)