Advertisement
carlavsulpizio

tp6_ej8

Oct 7th, 2024
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.12 KB | None | 0 0
  1. program tp6_ej8;
  2. type
  3.     mat = array [1..10,1..10] of integer;
  4.     vec = array [1..10] of integer;
  5.  
  6. procedure cargarVector (var vector:vec; n:byte);
  7. var
  8.     i:byte;
  9. begin
  10.     for i:=1 to n do
  11.     readln(vector[i]);
  12. end;
  13.  
  14. function xRy (x,y:integer):boolean;
  15. begin
  16.     if (x-y>=3) then
  17.         xRy:=true
  18.     else
  19.         xRy:=false;
  20. end;
  21.  
  22. procedure generarMatrizBooleana (var matriz:mat;vector:vec;n:byte);
  23. var
  24.     i,j:byte;
  25. begin
  26.     for i:=1 to n do
  27.     begin
  28.         for j:=1 to n do
  29.         if xRy(vector[i],vector[j]) then
  30.             matriz[i,j]:=1
  31.         else
  32.             matriz[i,j]:=0;
  33.        
  34.     end;
  35. end;
  36.  
  37. procedure mostrarmatriz (matriz:mat;n:byte);
  38. var
  39.     i,j:byte;
  40. begin
  41.     for i:=1 to n do
  42.     begin
  43.         for j:=1 to n do
  44.             write(' ',matriz[i,j],' ');
  45.         writeln();
  46.     end;
  47. end;
  48.  
  49. function reflexiva (matriz:mat;n:byte):boolean;
  50. var
  51.     i,j:byte;
  52. begin
  53.     for i:=1 to n do
  54.     begin
  55.         for j:=1 to n do
  56.             if (i=j) then
  57.             begin
  58.                 if (matriz[i,j]=1) then
  59.                     reflexiva:=true
  60.                 else
  61.                     reflexiva:=false;
  62.             end;
  63.     end;
  64. end;
  65.  
  66. function simetrica (matriz:mat;n:byte):boolean;
  67. var
  68.     i,j:byte;
  69.     flag:boolean;
  70. begin
  71.     flag:=false;
  72.     for i:=1 to n do
  73.     begin
  74.         for j:=1 to n do
  75.             if (matriz[i,j]=matriz[j,i]) then
  76.                 flag:=true
  77.             else
  78.                 flag:=false;
  79.             end;
  80.     end;
  81.     simetrica:=flag;
  82.  
  83. var
  84.     n,m:byte;
  85.     vectorNum:vec;
  86.     matrizRel:mat;
  87. begin
  88.     writeln('cantidad de nros: ');
  89.     readln(n);
  90.     cargarVector(vectorNum,n);
  91.     writeln('xRy sií x-y>=3');
  92.    
  93.     generarMatrizBooleana(matrizRel,vectorNum,n);
  94.     mostrarmatriz(matrizRel,n);
  95.    
  96.     if simetrica(matrizRel,n) then
  97.         writeln('R es simetrica y reflexiva')
  98.     else
  99.         begin
  100.             if (reflexiva(matrizRel,n)) then
  101.                 writeln('R es reflexiva pero no simetrica')
  102.             else
  103.                 writeln('R no es reflexiva ni simetrica');
  104.         end;
  105.  
  106.  
  107. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement