Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2012, 14:57   #1
}|{eka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 16
По умолчанию Процедуры и функции для двумерных массивов

Здраствуйте помогите пожалуйста с решением 3-х задач на двумерные массивы. У меня есть готовое решение но я не могу переделать эти решения в процедуры и функции вот задачи:
  1. Дан целочисленный массив В[1..5, 1..5]. Вычислить сумму элементов этого массива, расположенных выше левой диагонали.
  2. Задан массив А[1..5,1..6]. Поменять в нем местами первый и последний столбец.
  3. Составьте программу циклической перестановки столбцов двумерного массива К, при которой i-й столбец i+1-м, а последний столбец становится первым.
  1. Код:
    unit Unit1; 
    {$mode objfpc}{$H+}
    interface
    uses
      Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
      Grids, StdCtrls, ExtCtrls;
    type
      { TForm1 }
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        StringGrid1: TStringGrid;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
    var
      Form1: TForm1; 
    implementation
    { TForm1 }
    procedure TForm1.Button1Click(Sender: TObject);
    const n=5;
    var b:array[1..n,1..n] of integer;
    i,j:integer;
    begin
         randomize;
         for  i:=1 to n do
         begin
        for j:=1 to n do
                       begin
                        b[i,j]:=random(10);
                        form1.StringGrid1.Cells[i-1,j-1]:=inttostr(b[i,j]);
                       end;
    end;
    form1.Button3.Enabled:=true;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    form1.Button3.Enabled:=false;
    form1.Label3.Caption:='';
    form1.StringGrid1.Clean;
    end;
    procedure TForm1.Button3Click(Sender: TObject);
    const n=5;
    var b:array[1..n,1..n] of integer;
    i,j:integer;
    p:real;
    begin
    for i:=1 to n do
     for j:=1 to n do
    b[i,j]:=strtoint(form1.StringGrid1.Cells[i-1,j-1]);
    p:=0;
    for i:=1 to n do
         begin
        for j:=1 to n do
                       begin
                         if i>j then
                         p:=p+b[i,j];
                        end;
    end;
    form1.Label3.Caption:=floattostr(p);
    end;
    initialization
      {$I unit1.lrs}
    end.
  2. Код:
    unit Unit1;
    {$mode objfpc}{$H+}
    interface
    uses
    Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
    StdCtrls, Spin, Grids;
    type
    { TForm1 }
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    private
    { private declarations }
    public
    { public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    { TForm1 }
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    form1.StringGrid1.Clean;
    form1.Button2.Enabled:=false;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    a:array[1..5,1..6] of integer;
    i,j:integer;
    begin
    randomize;
    For i:=1 to 5 do
    For j:=1 to 6 do
    begin
    a[i,j]:=random(100);
    form1.StringGrid1.Cells[i-1,j-1]:=inttostr(a[i,j]);
    end;
    form1.Button2.Enabled:=true;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    var a:array[1..5,1..6] of integer; i,j,k:integer;
    begin
    for i:=1 to 5 do
       for j:= 1 to 6 do
         a[i,j]:=strtoint(form1.StringGrid1.Cells[i-1,j-1]);
    for i:=1 to 5 do
    begin
    k:=a[i,1];
    a[i,1]:=a[i,6];
    a[i,6]:=k;
    end;
    for i:=1 to 5 do
    for j:= 1 to 6 do
    form1.StringGrid2.Cells[i-1,j-1]:=inttostr(a[i,j]);
    end;
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    form1.StringGrid2.Clean;
    form1.Button2.Enabled:=false;
    end;
    initialization
    {$I unit1.lrs}
    end.
}|{eka вне форума Ответить с цитированием
Старый 24.06.2012, 14:58   #2
}|{eka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 16
По умолчанию

Вот 3 задача:

Код:
unit Unit1; 
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  Grids, StdCtrls, Spin;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
    procedure SpinEdit2Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
var
  Form1: TForm1; 
implementation
var a:array of array of integer;
    m,n:integer;
{ TForm1 }
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
  form1.StringGrid1.ColCount:=form1.SpinEdit1.Value;
  form1.StringGrid2.ColCount:=form1.SpinEdit1.Value;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
randomize;
m:=SpinEdit2.Value;
n:=spinEdit1.Value;
Setlength(a,m,n);
StringGrid1.ColCount:=n;
StringGrid1.RowCount:=m;
StringGrid2.ColCount:=n;
StringGrid2.RowCount:=m;
for i:=0 to m-1 do
for j:=0 to n-1 do
 begin
  a[i,j]:=-50+random(100);
  StringGrid1.Cells[j,i]:=inttostr(a[i,j]);
 end;
Button2.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
var b:array of integer;
    i,j:integer;
begin
 Setlength(b,m);
 for i:=0 to m-1 do
 b[i]:=a[i,0];
 for j:=0 to n-2 do
 for i:=0 to m-1 do
 a[i,j]:=a[i,j+1];
 for i:=0 to m-1 do
 a[i,n-1]:=b[i];
 for i:=0 to m-1 do
 for j:=0 to n-1 do
 StringGrid2.Cells[j,i]:=inttostr(a[i,j]);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
   form1.StringGrid1.Clean;
   form1.Button2.Enabled:=false;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
  form1.StringGrid2.Clean;
  form1.Button2.Enabled:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
     form1.StringGrid1.ColCount:=form1.SpinEdit1.Value;
     form1.StringGrid1.RowCount:=form1.SpinEdit2.Value;
     form1.StringGrid2.ColCount:=form1.SpinEdit1.Value;
     form1.StringGrid2.RowCount:=form1.SpinEdit2.Value;
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
  form1.StringGrid1.RowCount:=form1.SpinEdit2.Value;
  form1.StringGrid2.RowCount:=form1.SpinEdit2.Value;
end;
initialization
  {$I unit1.lrs}
end.
}|{eka вне форума Ответить с цитированием
Старый 24.06.2012, 23:20   #3
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Вот пример процедуры:
Код:
PROCEDURE (<формальные параметры>) {например: x:integer; z,k:real}
  VAR         //указанные сдесь переменные будут использоваться только внутри данной процедуры
     <переменные>;
  BEGIN
    <тело процедуры>
  END;
P.S. Если перед формальными параметрами указывать слово var, к примеру
Код:
Procedure RTH( Var x,y:integer)
, то указанные переменные в формальных параметрах будут изменяться не только внутри самой процедуры, но и будут в соостветствии с сабой менять поданные переменные в данную процедуру.

Ф-ция от процедуры отличается тем, что имени процедуры мы не можем присвоить значение, а имени ф-ции можем, к примеру
Код:
Function DFS(<формальные параметры>):Integer(Выходной тип, ток у ф-ции)
  Begin
    DFS:=34
  End;
P.S. Если не совсем понятна суть, то могу скинуть методическое пособие в котором все понятно и хорошо написано.
<----Весы Там.
Npwas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка двумерных массивов desu_desu Помощь студентам 0 17.12.2011 15:21
Обработка двумерных массивов (С++) Day Stiff Помощь студентам 3 14.12.2011 18:22
процедуры и функции. обработка массивов ChertYaGa Помощь студентам 1 28.09.2010 11:41
использование 2х мерных массивов внутри функции или процедуры kartalex Общие вопросы Delphi 17 22.09.2010 16:30
Гики двумерных массивов Кипящий чайник Общие вопросы C/C++ 13 02.02.2010 13:25