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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2016, 19:19   #1
Stelex
Новичок
Джуниор
 
Регистрация: 27.03.2016
Сообщений: 2
По умолчанию перенос на формы

Ребята надо перенести на формы консольное приложение, суть кода в том, что пользователь задаёт матрицу 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.

Последний раз редактировалось Аватар; 27.03.2016 в 19:45.
Stelex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных с формы на лист yuresku Microsoft Office Excel 0 12.08.2014 22:44
Перенос данных из формы в таблицу Enero Microsoft Office Access 1 08.08.2014 08:20
Перенос формы из qt в vs WennY Qt и кроссплатформенное программирование С/С++ 4 08.03.2013 17:03
Перенос формы из dll-ки в программу Greek9000 Общие вопросы Delphi 4 22.12.2009 18:19
Перенос данных с формы на лист Lyubov1990 Microsoft Office Excel 2 07.04.2009 15:08