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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2014, 14:45   #11
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Предлагаю вводить массив так:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure Edit1KeyPress(Sender: TObject; var Key: char);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var  a:array[1..5,1..5] of integer; i,j:integer;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=Low(a); j:=low(a[i]);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  if key=#13 then begin
    a[i,j]:=StrToIntDef(TEdit(Sender).Text,0);
    inc(j);
    if j>High(a[i]) then begin
      inc(i);
      if i>High(a) begin
         ShowMessage('ввод массива окончен');
         i:=Low(a);
      end;
      j:=low(a[i]);
    end;
  end;
end;

end.
Идея ясна?
Что то ошибку выдаёт. А нельзя обычный ввод массивов сделать, чтобы вводить в Edit, а он их в label выстраивал? а потом уже с помощью кнопки он отсевал в один лабел кол-во тех , что делится на 3, и в другой тех, что делится на 5?
Argontarg вне форума Ответить с цитированием
Старый 04.02.2014, 15:14   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что то ошибку выдаёт.
Бывает )
Цитата:
А нельзя обычный ввод массивов сделать, чтобы вводить в Edit, а он их в label выстраивал?
Можно.
Код:
with TStringList.Create do begin
 Delimiter:=' ';
 DelimitedText:=Edit1.Text;
 for i:=0 to Count-1 do begin
  strings[i] дает очередной элемент, введенный в Эдит через пробел
 end;
 free;
end;
А вообще не выеживайся, и используй StringGrid для двумерных массивов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.02.2014, 01:04   #13
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Бывает )

Можно.
Код:
with TStringList.Create do begin
 Delimiter:=' ';
 DelimitedText:=Edit1.Text;
 for i:=0 to Count-1 do begin
  strings[i] дает очередной элемент, введенный в Эдит через пробел
 end;
 free;
end;
А вообще не выеживайся, и используй StringGrid для двумерных массивов.
Код:
var
i:integer;
begin
with TStringList.Create do begin
 Delimiter:=' ';
 DelimitedText:=Edit1.Text;
 for i:=0 to Count-1 do begin
  strings[i];
  Label1.Caption:=inttostr(i);
 end;
 free;
end;
написал так, но когда ввожу в edit, в label пишет просто кол-во цифр), а нужно чтобы выстраивал опр. массив 5 на 5 там к примеру. Ну или хотя бы, чтобы рандомно вводилось само по нажатию кнопки тогда?!

Последний раз редактировалось Stilet; 06.02.2014 в 18:05.
Argontarg вне форума Ответить с цитированием
Старый 06.02.2014, 02:31   #14
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
в label пишет просто кол-во цифр), а нужно чтобы выстраивал опр. массив 5 на 5 там к примеру.
Простите, но TLabel для этого, не предназначен. Используйте TStringGrid, как Вам советовали выше.
Streletz вне форума Ответить с цитированием
Старый 06.02.2014, 17:30   #15
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Простите, но TLabel для этого, не предназначен. Используйте TStringGrid, как Вам советовали выше.
Ок хорошо!
Argontarg вне форума Ответить с цитированием
Старый 06.02.2014, 18:36   #16
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

var
r : array[1..10, 1..10] of integer;
i, j: integer;

begin
for i:=1 to 10 do
for j:=1 to 10 do
r[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]);
end;

Вот такой простенький массив сделал, но как заполнить его рандомно? Куда там правильно поместить Randomize?!
Argontarg вне форума Ответить с цитированием
Старый 06.02.2014, 22:26   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Argontarg Посмотреть сообщение
var
r : array[1..10, 1..10] of integer;
i, j: integer;

begin
for i:=1 to 10 do
for j:=1 to 10 do
r[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]);
end;

Вот такой простенький массив сделал, но как заполнить его рандомно?
например, числами от 1 до 100:

Код:
  Stringgrid1.RowCount := 10;  {10 строк}
  StringGrid1.ColCount :=  10;  {10 столбцов}
  for i:=0 to StringGrid1.RowCount-1 do
    for j:=0 to StringGrid1.ColCount-1 do
       StringGrid1.Cells[j,i] := IntToStr(  Random(100)+1 );
Цитата:
Сообщение от Argontarg Посмотреть сообщение
Куда там правильно поместить Randomize?!
Randomize достаточно вызывать один раз, например, при создании формы (в событии FormCreate допишите:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  .....
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.02.2014, 17:15   #18
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
например, числами от 1 до 100:

Код:
  Stringgrid1.RowCount := 10;  {10 строк}
  StringGrid1.ColCount :=  10;  {10 столбцов}
  for i:=0 to StringGrid1.RowCount-1 do
    for j:=0 to StringGrid1.ColCount-1 do
       StringGrid1.Cells[j,i] := IntToStr(  Random(100)+1 );

Randomize достаточно вызывать один раз, например, при создании формы (в событии FormCreate допишите:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  .....
end;
Не пашет, я вставил это в кнопку var
r : array[1..10, 1..10] of integer;
i, j: integer;

begin
for i:=1 to 10 do
for j:=1 to 10 do
r[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]);
end;
В форму Randomize; просто вписал после begina - не пашет.
В саму кнопку после begina вписал тоже не пашет.
Argontarg вне форума Ответить с цитированием
Старый 07.02.2014, 17:18   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Не пашет
Random наверно белым цветом в коде. Поэтому и не пашет (целину что ли?)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.02.2014, 17:11   #20
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Random наверно белым цветом в коде. Поэтому и не пашет (целину что ли?)
И, что тогда делать? нет не целину.
Argontarg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти количество положительных и кратные 7 элементов массива. только простым способом. Паскаль D1SK Помощь студентам 1 06.12.2011 22:04
неработают 2 скрипта, не работают друг с другом Bardak2 JavaScript, Ajax 0 23.11.2011 17:41
поменять адреса указателей друг с другом dasvex Помощь студентам 8 08.09.2011 20:08
Задача на работу с двумерным массивом.Найти количество прямоугольников. anta Общие вопросы C/C++ 6 05.01.2009 15:23
Паскаль. найти все числа кратные трем и посчитать их количество __k1ll3r__ Помощь студентам 6 02.04.2008 16:37