unit Unit1;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
Const
NMax = 10;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//объявление типа двумерного массива
mas=array[1..NMax,1..Nmax] of Integer;
var
Form1 : TForm1;
A : mas;
implementation
{$R *.lfm}
//Изменить размерность матрицы ...
procedure TForm1.Button1Click(Sender: TObject);
Var
i,r,c : Integer;
begin
r:=StrToInt(Edit1.Text);
If r>NMax Then r:=NMax;
c:=StrToInt(Edit2.Text);
If c>NMax Then c:=NMax;
If ((r<1) Or (c<1)) Then
Begin
ShowMessage('Задайте нормальную размерность матрицы !!!');
Exit;
End;
StringGrid1.ColCount:=c+1;
StringGrid1.RowCount:=r+1;
StringGrid1.Cells[0,0]:='Массив A';
For i:=1 To r Do
StringGrid1.Cells[0,i]:='i='+IntToStr(i);
For i:=1 To c Do
StringGrid1.Cells[i,0]:='j='+IntToStr(i);
end;
//Найти цифру, чаще всего встречающуюся в массиве...
procedure TForm1.Button2Click(Sender: TObject);
Var
r,c,i,j,k : Integer;
me : Integer;
s : String;
//Массив для подсчёта одинаковых цифр
m : Array[0..9] Of Integer;
begin
//Массив для подсчёта одинаковых цифр - очищаем
For i:=0 To 9 Do m[i]:=0;
r:=StringGrid1.RowCount-1; //Конечные индексы в таблице StringGrid
c:=StringGrid1.ColCount-1;
//Заполнение массива А элементами таблицы StringGrid1
For i:=1 to r do
For j:=1 to c do
A[i,j]:=StrToInt(StringGrid1.Cells[j,i]);
For i:=1 To r Do
For j:=1 To c Do
Begin
s:=IntToStr(A[i,j]);
//Считаем цифры в числе
For k:=1 To Length(s) Do
If (s[k] In ['0'..'9']) Then
Inc(m[Ord(s[k])-Ord('0')]);
End;
//Выведем результата в Label...
me:=0; k:=-1;
For i:=0 To 9 Do
If m[i]>me Then
Begin
me:=m[i];
k:=i;
End;
If k=-1 Then Label5.Caption:='Ни одной' Else
//Найдём все цифры, одинаково часто встречающиеся в массиве
Begin
s:=IntToStr(m[k])+' раза встречаются цифры: ';
For i:=0 To 9 Do
If m[i]=m[k] Then s:=s+IntToStr(i)+' ';
Label5.Caption:=s;
End;
End;