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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2012, 11:06   #1
Archangelos
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 17
По умолчанию задать проверку на повторения чисел

Код:
unit unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  const
  N=11;
var
  Form1: TForm1;
  Ri, Ki:array[0..N] of integer;
  i,j,R,K:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
for i := 0 to N do begin

  Ri[i]:=random(12);

  Ki[i]:=Ri[i];
  StringGrid1.Cells[i,0]:=inttostr(Ki[i]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
for j := 1 to N do begin
  i:=j;
  K:=Ki[j];
while ((i>0)and(Ki[i-1]>K)) do begin
  Ki[i]:= Ki[i-1];
  i:=i-1;
end;
  Ki[i]:=K;
end;
for i:= 0 to N do
  StringGrid1.Cells[i,1]:=inttostr(Ki[i]);
end;
end.

здесь в части procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
for i := 0 to N do begin
  Ri[i]:=random(12);
адается рандом чисел от 1 до 12, но выводиться может и 1 2 2 3 3 3 4 5 и т п, как предотвратить повторения? Если не сложно, пропишите пожалуйста алгоритм



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 29.03.2012 в 11:37.
Archangelos вне форума Ответить с цитированием
Старый 29.03.2012, 11:30   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Код:
repeat
a:=random(12);
noBTopeHue:=false;
for i:=0 to Grid1.Rows-1 do
for j:=0 to Grid1.Cols-1 do
if StrToInt(Grid1.Cells[i,j])=a then noBTopeHue:=True;
until not noBTopeHue;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 29.03.2012, 11:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

смотрите, random(12) возвращает числа от 0 до 11
вы же хотите заполнить 11 чисел - НЕ ПОВТОРЯЮЩИХСЯ?

или всё таки Вам нужно числа от 1 до 12 ?!

а по сути всё просто.
заполняете его числами от 1 до 12. перемешивайте. ПРОФИТ.


код можете подсмотреть тут:
http://www.programmersforum.ru/showp...8&postcount=13
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вычислить из массива чисел повторения Irek11 Microsoft Office Excel 12 19.08.2011 13:28
Как задать интервал чисел? AnderoN Помощь студентам 5 03.06.2011 17:33
Задать два массива целых чисел: А(12) и В(6). Найти минимальные элементы этих массивов и поменять.... eragon_ua Помощь студентам 5 15.04.2011 07:58
VBA удалить столбцы, задать фикс. ширину столбца и задать перенос по словам johny_03 Microsoft Office Excel 1 14.04.2011 20:53
как задать диапазон для случайных чисел Аlex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.05.2010 03:18