Ребята надо перенести на формы консольное приложение, суть кода в том, что пользователь задаёт матрицу n*n, в матрице есть чёрные и белые квадраты( как в шахматах) , так вот, в чёрных квадратах значение , которое равно среднему значению, рядом стоящих белых квадратов(значений). Помогите , в формах ещё не силён....
код вод:
Код:
program sha;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var i,j,n,m,sum,cnt:longint;
a:array [1..100,1..100] of longint;
function check_pos(i,j:longint):boolean;
begin
exit((i>=1) and (i<=n) and (j>=1) and (j<=m));
end;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do a[i][j]:=random(100);
for i:=1 to n do
begin
for j:=1 to m do write(a[i][j],' ');
writeln;
end;
for i:=1 to n do
for j:=1 to n do
if ((i mod 2=1) and (j mod 2=0)) or ((i mod 2=0) and (j mod 2=1))
then begin
sum:=0; cnt:=0;
if (check_pos(i+1,j))
then begin
inc(sum,a[i+1][j]);
inc(cnt);
end;
if (check_pos(i-1,j))
then begin
inc(sum,a[i-1][j]);
inc(cnt);
end;
if (check_pos(i,j+1))
then begin
inc(sum,a[i][j+1]);
inc(cnt);
end;
if (check_pos(i,j-1))
then begin
inc(sum,a[i][j-1]);
inc(cnt);
end;
a[i][j]:=sum div cnt;
end;
writeln;
for i:=1 to n do
begin
for j:=1 to n do write(a[i][j],' ');
writeln;
end;
readln;
end.
Пробывал перенести на формы, не вышло, код на формах вот:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
ListBox1: TListBox;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
function check_pos(i,j:longint):boolean;
private
{ Private declarations }
public
{ Public declarations }
var value1,value2:longint;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.check_pos(i,j:longint):boolean; //Boolean
begin
exit((i>=1) and (j>=1) );
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j,n,m,sum,cnt:longint;
a:array [1..100,1..100] of longint;
begin
begin
n:=value1;
m:=value2;
for i:=1 to n do
for j:=1 to m do a[i][j]:=random(100);
for i:=1 to n do
begin
for j:=1 to m do write(a[i][j],' ');
writeln;
end;
for i:=1 to n do
for j:=1 to n do
if ((i mod 2=1) and (j mod 2=0)) or ((i mod 2=0) and (j mod 2=1))
then begin
sum:=0; cnt:=0;
if (check_pos(i+1,j))
then begin
inc(sum,a[i+1][j]);
inc(cnt);
end;
if (check_pos(i-1,j))
then begin
inc(sum,a[i-1][j]);
inc(cnt);
end;
if (check_pos(i,j+1))
then begin
inc(sum,a[i][j+1]);
inc(cnt);
end;
if (check_pos(i,j-1))
then begin
inc(sum,a[i][j-1]);
inc(cnt);
end;
a[i][j]:=sum div cnt;
end;
writeln;
for i:=1 to n do
begin
for j:=1 to n do ListBox1.Items.Add(IntToStr(a[i][j]));
writeln;
end;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var cd:longint;
begin
val(Edit1.Text,value1,cd);
end;
procedure TForm1.Edit2Change(Sender: TObject);
var dc:longint;
begin
val(Edit2.Text,value2,dc);
end;
end.