1 Востаннє редагувалося tania.ionashku (07.11.2013 17:17:40)

Тема: Робота з матрицями (Delphi)

Допоможіть з програмним кодом: Якщо у матриці А(3*3) cума елементів побічної діагоналі рівна сумі елементів 3 рядочка, то головну діагональ замінити 3 стовпцем.

частина коду:

For i:=n to 1 do

  begin
  s:=0;
  s:=s+a[i,n+1-i];
  end;


  For j:=1 to n do
  begin
  k:=0;
  k:=k+a[3,j];
  end;


  If s=k then
  begin
  for i:=1 to n do
   begin
   a[i,i]:=a[i,3];

   end;

Моя проблема в тому, що  коли я запускаю програму то у виводі я отримую транспоновану матрицю, а не ту яка в умові...(взагалі ця програма це робота із компонентою StringGrid.Може бути що проблема(помилка) у виводі  чи десь ще?

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    Label2: TLabel;
    StringGrid2: TStringGrid;
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  matr=array[1..3,1..3] of real;

var
  Form1: TForm1;
  n: integer;
  a:matr;

implementation

{$R *.dfm}
procedure matrix(n:integer;var a:matr);
Var
i,j:integer;
s,k:real;
Begin

 For i:=n to 1 do

  begin
  s:=0;
  s:=s+a[i,n+1-i];
  end;


  For j:=1 to n do
  begin
  k:=0;
  k:=k+a[3,j];
  end;


  If s=k then
  begin
  for i:=1 to n do
   begin
   a[i,i]:=a[i,3];

   end;

   end;
   end;




procedure TForm1.Edit1Change(Sender: TObject);
begin
   n:=StrToInt(Edit1.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
       n:=2;
     StringGrid1.Visible:=False;
     StringGrid2.Visible:=False;

end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
   StringGrid1.ColCount:=n+1;
   StringGrid1.RowCount:=n+1;
   StringGrid1.Cells[0,0]:='A';
   for i:=1 to n do
   for j:=1 to n do
   begin
     StringGrid1.Cells[j,i]:='0';
     a[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
   end;
   for i:=1 to n do
   StringGrid1.Cells[0,i]:=FloatToStr(i);
   StringGrid1.Cells[i,0]:=FloatToStr(i);
   StringGrid1.Cells[i,i]:= '1';
   StringGrid1.Visible:=True ;
end;





procedure TForm1.Button2Click(Sender: TObject);
var i,j:Integer;st:string;
begin
  for i:=1 to n do
  for j:=1 to n do
  a[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
  matrix(n,a);
  StringGrid2.RowCount:=n+1;
  StringGrid2.ColCount:=n+1;
  StringGrid2.Cells[0,0]:='A';

  for i:=1 to n do
  for j:=1 to n do
  begin
    StringGrid2.Cells[i,j] :=FloatToStr(a[i,j]);
  end;

  for i:=1 to n do
  for j:=1 to n do
  StringGrid2.Cells[i,j]:=FloatToStr(a[i,j]);
  StringGrid2.Visible:=True;


end;

end.

2

Re: Робота з матрицями (Delphi)

http://s018.radikal.ru/i504/1305/4e/128b3beefcef.jpg

3 Востаннє редагувалося Chemist-i (07.11.2013 00:22:46)

Re: Робота з матрицями (Delphi)

Так, і вивчіть будь-ласка правильну назву середовища!

Прихований текст
Бо нас з Torbins-ом це особо пригнічує =)
x

4 Востаннє редагувалося tania.ionashku (07.11.2013 16:24:16)

Re: Робота з матрицями (Delphi)

вибачте будь ласка шановний  Chemist-i  ,я бачила що неправильно написала назву середовища, просто не знала як редагувати(лиш зареєструвалася).... :[

5 Востаннє редагувалося koala (07.11.2013 16:57:11)

Re: Робота з матрицями (Delphi)

tania.ionashku написала:

частина коду:

Тег code ставте. А так майже вгадали:

s:=0;
  for i:=1 to n do
    s:=s+a[i,n+1-i];

k:=0;
for j:=1 to n do
  k:=k+a[3,j];

If s=k then
  for i:=1 to n do
    a[i,i]:=a[i,3];

Але це тільки тому, що код і питання дуже прості. На майбутнє - постарайтеся наводити найменший робочий приклад, який демонструє, що у вас не виходить (ваш приклад - не робочий, бо не містить визначення a,i,n,s,k) і детальний опис того, що саме не виходить (якщо компілятор каже про помилку - текст цієї помилки, якщо вивід незрозумілий - то що виводить, а що ви очікували, і свої роздуми стосовно того, чому так сталося.

Подякували: Torbins, Replace, tania.ionashku3