El documento describe un programa que permite al usuario llenar una matriz y luego verificar si es diagonal o no. Contiene procedimientos para llenar la matriz y mostrarla en una rejilla, así como uno para validar si solo contiene valores distintos de cero en la diagonal principal.
1. unit Unit1;<br />interface<br />uses<br /> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br /> Dialogs, StdCtrls, Grids;<br />type<br /> TForm1 = class(TForm)<br /> Caja_Dimension: TEdit;<br /> Label2: TLabel;<br /> Label3: TLabel;<br /> Rejilla: TStringGrid;<br /> Boton_Llenar: TButton;<br /> Boton_Validar: TButton;<br /> Boton_Salir: TButton;<br /> Label4: TLabel;<br /> Eti_Resultado: TLabel;<br /> procedure Boton_SalirClick(Sender: TObject);<br /> procedure Boton_LlenarClick(Sender: TObject);<br /> procedure Boton_ValidarClick(Sender: TObject);<br /> private<br /> { Private declarations }<br /> public<br /> { Public declarations }<br /> end;<br />type<br /> Arreglo_Matriz = Array [1..10,1..10] of real;<br />var<br /> Form1: TForm1;<br /> Matriz_A: Arreglo_Matriz;<br />implementation<br />{$R *.dfm}<br />// Procedimiento para llenar una matriz<br />Procedure Llenar_Matriz (out Arreglo:Arreglo_Matriz; Cont:Integer);<br /> var<br /> fila,columna:integer;<br /> begin<br /> for fila:=1 to Cont do<br /> for columna:=1 to Cont do<br /> Arreglo[fila,columna]:=StrtoFloat(inputbox('Llenando Arreglo','Intro elemento ['+inttostr(fila)+','+inttostr(columna)+']',''));<br /> end;<br />// Procedimiento para llenar el stringrid (reja) con lo datos de la matriz<br />Procedure Cargar_Rejilla ( Arreglo:Arreglo_Matriz; Cont:Integer; Rejilla:TStringGrid);<br /> var<br /> fila,Columna:integer;<br /> begin<br /> for fila:=1 to Cont do<br /> for columna:=1 to Cont do<br /> begin<br /> Rejilla.Cells[columna-1,fila-1]:=FloatToStr(Arreglo[fila,columna]);<br /> end;<br /> end;<br />procedure TForm1.Boton_SalirClick(Sender: TObject);<br />begin<br /> Close;<br />end;<br />procedure TForm1.Boton_LlenarClick(Sender: TObject);<br /> var<br /> Cantidad:integer;<br /> begin<br /> Cantidad:=StrToInt(Caja_Dimension.text);<br /> Llenar_Matriz(Matriz_A,Cantidad);<br /> Rejilla.RowCount:=StrtoInt(Caja_Dimension.Text);<br /> Rejilla.ColCount:=StrtoInt(Caja_Dimension.Text);<br /> Cargar_Rejilla(Matriz_A,Cantidad,Rejilla);<br /> end;<br />procedure TForm1.Boton_ValidarClick(Sender: TObject);<br />var<br /> Cantidad,fila,columna:integer;<br /> Valida:boolean;<br /> begin<br /> // Variable que determina si es o no diagonal la matriz<br /> Valida:=true;<br /> // Cantidad es la dimension de la matriz<br /> Cantidad:=StrToInt(Caja_Dimension.text);<br /> for fila:=1 to Cantidad do<br /> for columna:=1 to Cantidad do<br /> begin<br /> // 1. Se compara fila y columna para no tomar en cuenta los elementos de la diagonal<br /> // 2. Se compara los elementos de la matriz con 0<br /> // Si esto ocurre la matriz no es diagonal y se declara Valida falsa<br /> If (fila <> columna) and (Matriz_A[fila,columna] <> 0) then<br /> Valida:=false;<br /> end;<br /> // Mensaje de si es o no valida<br /> If (Valida = true) then<br /> Eti_Resultado.Caption:= 'Esta es una Matriz DIAGONAL'<br /> else<br /> Eti_Resultado.Caption:= 'NO es una Matriz DIAGONAL';<br /> end;<br />end. unit Unit1;<br />interface<br />uses<br /> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br /> Dialogs, StdCtrls, Grids;<br />type<br /> TForm1 = class(TForm)<br /> Caja_Dimension: TEdit;<br /> Label2: TLabel;<br /> Label3: TLabel;<br /> Rejilla: TStringGrid;<br /> Boton_Llenar: TButton;<br /> Boton_Validar: TButton;<br /> Boton_Salir: TButton;<br /> Label4: TLabel;<br /> Eti_Resultado: TLabel;<br /> procedure Boton_SalirClick(Sender: TObject);<br /> procedure Boton_LlenarClick(Sender: TObject);<br /> procedure Boton_ValidarClick(Sender: TObject);<br /> private<br /> { Private declarations }<br /> public<br /> { Public declarations }<br /> end;<br />type<br /> Arreglo_Matriz = Array [1..10,1..10] of real;<br />var<br /> Form1: TForm1;<br /> Matriz_A: Arreglo_Matriz;<br />implementation<br />{$R *.dfm}<br />// Procedimiento para llenar una matriz<br />Procedure Llenar_Matriz (out Arreglo:Arreglo_Matriz; Cont:Integer);<br /> var<br /> fila,columna:integer;<br /> begin<br /> for fila:=1 to Cont do<br /> for columna:=1 to Cont do<br /> Arreglo[fila,columna]:=StrtoFloat(inputbox('Llenando Arreglo','Intro elemento ['+inttostr(fila)+','+inttostr(columna)+']',''));<br /> end;<br />// Procedimiento para llenar el stringrid (reja) con lo datos de la matriz<br />Procedure Cargar_Rejilla ( Arreglo:Arreglo_Matriz; Cont:Integer; Rejilla:TStringGrid);<br /> var<br /> fila,Columna:integer;<br /> begin<br /> for fila:=1 to Cont do<br /> for columna:=1 to Cont do<br /> begin<br /> Rejilla.Cells[columna-1,fila-1]:=FloatToStr(Arreglo[fila,columna]);<br /> end;<br /> end;<br />procedure TForm1.Boton_SalirClick(Sender: TObject);<br />begin<br /> Close;<br />end;<br />procedure TForm1.Boton_LlenarClick(Sender: TObject);<br /> var<br /> Cantidad:integer;<br /> begin<br /> Cantidad:=StrToInt(Caja_Dimension.text);<br /> Llenar_Matriz(Matriz_A,Cantidad);<br /> Rejilla.RowCount:=StrtoInt(Caja_Dimension.Text);<br /> Rejilla.ColCount:=StrtoInt(Caja_Dimension.Text);<br /> Cargar_Rejilla(Matriz_A,Cantidad,Rejilla);<br /> end;<br />procedure TForm1.Boton_ValidarClick(Sender: TObject);<br />var<br /> Cantidad,fila,columna:integer;<br /> Valida:boolean;<br /> begin<br /> // Variable que determina si es o no diagonal la matriz<br /> Valida:=true;<br /> // Cantidad es la dimension de la matriz<br /> Cantidad:=StrToInt(Caja_Dimension.text);<br /> for fila:=1 to Cantidad do<br /> for columna:=1 to Cantidad do<br /> begin<br /> // 1. Se compara fila y columna para no tomar en cuenta los elementos de la diagonal<br /> // 2. Se compara los elementos de la matriz con 0<br /> // Si esto ocurre la matriz no es diagonal y se declara Valida falsa<br /> If (fila <> columna) and (Matriz_A[fila,columna] <> 0) then<br /> Valida:=false;<br /> end;<br /> // Mensaje de si es o no valida<br /> If (Valida = true) then<br /> Eti_Resultado.Caption:= 'Esta es una Matriz DIAGONAL'<br /> else<br /> Eti_Resultado.Caption:= 'NO es una Matriz DIAGONAL';<br /> end;<br />end.<br />