Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Создание матриц.


Автор: SlevinVik 5.4.2009, 13:21
Здравствуйте! Пожалуйста, помогите решить задачу: "Создать матрицу 5х5. Найти среднее арифметическое ее положительных членов и вывести. Поменять местами 2-ой столбец с 3-им, вывести в отдельную матрицу.  

Автор: Kakadu 5.4.2009, 16:17
Код
var a,b:array[1..5,1..5] of integer;
      i,j,temp,middle:integer;
BEGIN
     writeln('BEGIN');
     middle:=0;

     for i:=1 to 5 do
       for j:=1 to 5 do
         a[i,j]:=random(100);
     writeln('**** a ****');
     for i:=1 to 5 do begin
       for j:=1 to 5 do
           write(a[i,j]:2,' ');
       writeln('');
     end;
     middle:=0;
     for i:=1 to 5 do
       for j:=1 to 5 do
         middle:=middle+a[i,j];
     writeln('Middle= ', (middle/25):3:2);

     for i:=1 to 5 do
       for j:=1 to 5 do
         b[i,j]:=a[i,j];

     for i:=1 to 5 do begin
         temp:=b[i,2];
         b[i,2]:=b[i,3];
         b[i,3]:=temp;
     end;
     writeln('**** b ****');
     for i:=1 to 5 do begin
       for j:=1 to 5 do
           write(b[i,j]:2,' ');
       writeln('');
     end;
     writeln('END');
END.

Автор: SlevinVik 5.4.2009, 16:21
Kakadu, спасибо большое)... если можно, то мне именно в delphi надо через форму, кто знает помогите, пожалуйста.


Автор: Kakadu 5.4.2009, 18:58
У меня Delphi под рукой нет, ничем не могу помочь.
А в чем проблема? Не понятно как это на форму вывести?

Автор: v4v4n 5.4.2009, 21:06
Код

procedure TForm1.Button1Click(Sender: TObject);
var a,b:array[1..5,1..5] of integer;
      i,j,temp,middle:integer;
      s :string;
begin
     Memo1.Lines.Add('BEGIN');
     for i:=1 to 5 do
       for j:=1 to 5 do
         a[i,j]:=random(100);
     Memo1.Lines.Add('**** a ****');
     for i:=1 to 5 do begin
       s:='';
       for j:=1 to 5 do
           s:=s+IntToStr(a[i,j])+' ';
       Memo1.Lines.Add(s);
     end;
     middle:=0;
     for i:=1 to 5 do
       for j:=1 to 5 do
         middle:=middle+a[i,j];
     Memo1.Lines.Add('Middle= '+FloatToStr(middle/25));
     for i:=1 to 5 do
       for j:=1 to 5 do
         b[i,j]:=a[i,j];
     for i:=1 to 5 do begin
         temp:=b[i,2];
         b[i,2]:=b[i,3];
         b[i,3]:=temp;
     end;
     Memo1.Lines.Add('**** b ****');
     for i:=1 to 5 do begin
       s:='';
       for j:=1 to 5 do
           s:=s+IntToStr(a[i,j])+' ';
       Memo1.Lines.Add(s);
     end;
     Memo1.Lines.Add('END');
end;

)))

Автор: v4v4n 5.4.2009, 21:40
Код

const n=5;
      r=99;
procedure TForm1.FormCreate(Sender: TObject);
var  i,j : integer;
begin
     StringGrid1.ColCount:=succ(n);
     StringGrid1.RowCount:=succ(n);
     StringGrid2.ColCount:=succ(n);
     StringGrid2.RowCount:=succ(n);
     for i:=1 to n do
       for j:=1 to n do
         StringGrid1.Cells[i,j]:=IntToStr(random(2*r+1)-r);
end;
procedure TForm1.Button1Click(Sender: TObject);
var  i,j,middle,c:integer;
begin
     middle:=0;
     for i:=1 to n do
       for j:=1 to n do begin
         c:=StrToInt(StringGrid1.Cells[i,j]);
         if c>0 then inc(middle,c);
       end;
     MessageDlg('Middle= '+FloatToStr(middle/sqr(n)),mtInformation,[mbOk],0);
end;

procedure TForm1.Button2Click(Sender: TObject);
var  i,j:integer;
begin
     for i:=1 to n do
       for j:=1 to n do
           case i of
           2 : StringGrid2.Cells[succ(i),j]:=StringGrid1.Cells[i,j];
           3 : StringGrid2.Cells[pred(i),j]:=StringGrid1.Cells[i,j];
           else StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j];
           end;
end;


Автор: SlevinVik 5.4.2009, 22:08
v4v4n, спасибо огромное))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)