Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: -iSiS- en 20 Enero 2010, 12:05 pm



Título: Duda Pascal
Publicado por: -iSiS- en 20 Enero 2010, 12:05 pm
Hola! He hecho un prgrama que me permita ingresar los números en columna uno a uno de una matriz 4x4 y las imprima como matriz, y a continuación me saque el mayor elemento de la diagonal principal y el menor de la diagonal secundaria. Bien, he usado for, y el programa compila y se ejecuta perfectamente. Me gusta hacer los programas y guardarlos hechos de distinta forma, pero en este caso, al querer hacerlo con while, se queda imprimiendo solo la matriz y no el resto. ¿Alguien podría ayudarme? Aqui les dejo las partes que me interesan:

Código
  1. writeln('La matriz que usted ha introducido es: ');
  2. writeln( );
  3. for i:= low(a) to high(a) do
  4. begin
  5. for j:=low(a[i]) to high(a[i]) do
  6. write(' ', a[i,j]:2, ' ');
  7. writeln( );
  8. end;
  9.  
  10. max:= a[1, 1];
  11. for i:= 1 to 4 do
  12. begin
  13. if (a[i,i] > max) then
  14. begin
  15. max:=a[i,i];
  16. end;
  17. end;
  18. writeln( );
  19. writeln('El mayor elemento de la diagonal principal es: ', max);
  20.  
  21. min:= a[1,4];
  22. j:=5;
  23. for i:= 1 to 4 do
  24. begin
  25. if (a[i,j-i] < min) then
  26. begin
  27. min:=a[i,j-i];
  28. end;
  29. end;
  30. writeln('El menor elemento de la diagonal secundaria es: ', min);
  31. writeln( );

Muchas gracias

Nota del mod: se hace más legible con etiquetas de código


Título: Re: Duda Pascal
Publicado por: Festor en 22 Enero 2010, 12:25 pm
Código
  1. writeln('La matriz que usted ha introducido es: ');
  2. writeln( );
  3. for i:= low(a) to high(a) do
  4. begin
  5. for j:=low(a[i]) to high(a[i]) do
  6. write(' ', a[i,j]:2, ' ');
  7. writeln( );
  8. end;
  9.  
  10. max:= a[1, 1];
  11. for i:= 1 to 4 do
  12. begin
  13. if (a[i,i] > max) then
  14. begin
  15. max:=a[i,i];
  16. end;
  17. end;
  18. writeln( );
  19. writeln('El mayor elemento de la diagonal principal es: ', max);
  20.  
  21. min:= a[1,4];
  22. j:=5;
  23. for i:= 1 to 4 do
  24. begin
  25. if (a[i,j-i] < min) then
  26. begin
  27. min:=a[i,j-i];
  28. end;
  29. end;
  30. writeln('El menor elemento de la diagonal secundaria es: ', min);
  31. writeln( );

Yo ahí, en el código que has escrito, no veo ningún while...   :o