Напечатать равные между собой элементы матрицы

Loslobos

помогите с решением! Дан массив a:array[1..2,1..15] of integer.Известно, что среди его элементов дваи только два равны между собой.Напечатайте их индексы. вот начало проги
var
  Form1: TForm1;
  a:array[1..2, 1..15] of integer;
  i,j:integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
for i:=1 to 2 do
for j:=1 to 15 do begin
a[i,j]:=random(100);
StringGrid1.Cells[i,j]:=inttostr(a[i,j]);
  end;end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:=inttostr(a[i,j]);
end;
 
end.
с канчалом чтот некак не выходит если возможно допишите правильное окончание кода зарание огромное спасибо!!!!
5 ответов

Loslobos

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const n=2;
      m=15;
 
var
  Form1: TForm1;
  a:array[1..n,1..m] of integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var f,b,c,d,i,j,p,q:byte;
begin
randomize;
//создадим таблицу 2х15 с фиксированными ячейками
Stringgrid1.ColCount:=m+1;
Stringgrid1.RowCount:=n+1;
for i:=1 to n do
Stringgrid1.Cells[0,i]:=Inttostr(i);
for i:=1 to m do
Stringgrid1.Cells[i,0]:=Inttostr(i);
//запоним матрицу разными числами
for i:=1 to n do
for j:=1 to m do
a[i,j]:=m*i+j; //от 16 до 42
//выберем 2 случайных ячейки
f:=random(n)+1;
b:=random(m)+1;
a[f,b]:=50; //зпишем в них число, которого еще нет
repeat
c:=random(n)+1;
d:=random(m)+1;
until(c<>f)or(d<>b);
a[c,d]:=a[f,b];
//заполним таблицу
for i:=1 to n do
for j:=1 to m do
Stringgrid1.Cells[j,i]:=Inttostr(a[i,j]);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j,p,q:byte;
begin
//пройдем 2 раза по матрице сравнивая разные ячеки
for i:=1 to n do
for j:=1 to m do
for p:=1 to n do
for q:=1 to m do
if(a[i,j]=a[p,q])and((p<>i)or(q<>j)) then //найдем одинаковые
Edit1.Text:='1 - ['+inttostr(p)+','+inttostr(q)+']  2 - ['+
             inttostr(i)+','+inttostr(j)+']';
end;
 
end.


Loslobos

звеняйте если придераюсь но мне кажетса что задача немного сложнее сталаи решение отличаетса от условия....хотя огромное спасибо дал еду для москаXD лови плюсик)


Loslobos

но мне кажетса что задача немного сложнее
Интересно чем? Есть 2 одинаковых элемента, найти их индексы, что еще нужно?


Loslobos

ну если покумекать то вроде ты прав...увижу затра правильно или нет кода покажу преподавателю))) еще раз пасипки а вот слушай ты написал в коде a:array[1..n,1..m] of integer; в условии было a:array[1..2,1..15] of integer; это же не мойдет за ошибку?просто препод может прикопатса)


Loslobos

А это для кого написано?
const n=2; * * * m=15;
Удобнее пользоваться символами нежели числами, меньше вероятность ошибки, напишешь вместо 2 число 3, компилятору пофиг, а если вместо n напишешь а, он ругаться будет...