Losowanie liczb do tabeli bez powtórzeń z określonego zakresu liczb

0

Witam
Mam takie zadanie aby wypełnić tablicę 12 elementową liczbami od -15 do 15 i tak żeby żadna się nie powtórzyła.Próbowałem to zrobić ale nie mam zielonego pojęcia jak bo byłem chory i nie było mnie na tych lekcjach ;p Będę bardzo wdzięczny za szybką pomoc.

0

Ech, leń z Ciebie i tyle. Nie było Ciebie to się siada przed kompem i googluje,
aby uzupełnić wiedzę. Masz poniżej gotowca, bo już kiedyś miałem coś w tym
stylu napisane, wystarczyło zmienić stałą z ilością liczb oraz zakres losowania.
A kod jest dla Pascala, ale na sieci idzie znaleźć również moduł crt dla Delphi.
I tak się niczego nie nauczysz, po co szedleś na uczelnię z programowaniem?
P.S. zapamiętaj sobie raz na zawsze od pytan o banalne podstawy jest dział
[!!!] [!!!] [!!!] NEWBIE [!!!] [!!!] [!!!]

program los_15;

uses
  crt;

{Ponizsza procedura sortujaca liczby rosnaco/malejaco pochodzi}
{z: http://www.swissdelphicenter.ch/torry/showcode.php?id=1616}

procedure SortujRosnaco(var A : array of integer);
var
  H : Word;
  Bis, I, J, K : LongInt;
begin
  Bis := High(A);
  K := Bis shr 1;
  while K > 0 do
  begin
    for I := 0 to Bis - K do
    begin
      J := I;
      {(A[J] < A[J + K]) - dla sortowania malejaco}
      {(A[J] > A[J + K]) - dla sortowania rosnaco}
      while (J >= 0) and (A[J] > A[J + K]) do
      begin
        H := A[J];
        A[J] := A[J + K];
        A[J + K] := H;
        if J > K then
          J := J - K
        else
          J := 0;
      end;
    end;
    K := K shr 1;
  end;
end;

{Wlasny kod funkcji RandomRange bez uzycia modułu Math:}
function RandomRange(const AFrom, ATo : Integer) : Integer;
begin
  if AFrom > ATo then
    RandomRange := Random(AFrom - ATo) + ATo
  else
    RandomRange := Random(ATo - AFrom) + AFrom;
end;

procedure LosujOrazPodajWyniki;
const
  {Stala okreslajaca ilosc liczb do wylosowania}
  IleLiczb = 12;
var
  Losuj : boolean;
  I, J, Liczba : integer;
  Tablica : array[1..IleLiczb] of integer;
begin
  for I := 1 to IleLiczb do
  begin
    Losuj := False;
    {Czy trwa losowanie}
    while Losuj = False do
    begin
      Losuj := True;
      {Losowanie liczby z zakresu od -15 do 15 wlacznie}
      Liczba := RandomRange(-15, 16);
      {Sprawdzenie czy libczba nie zostala wczesniej wylosowana}
      if I > 1 then
        for J := 1 to I - 1 do
          if Tablica[J] = Liczba then
            Losuj := False;
    end;
    Tablica[I] := Liczba;
  end;
  SortujRosnaco(Tablica);
  Writeln;
  Write('Wylosowano: ');
  for I := 1 to IleLiczb do
  begin
    Write((Tablica[I]));
    if I < IleLiczb then
      Write(' ');
  end;
end;

var
  Klawisz : Char;
begin
  ClrScr;
  Randomize;
  LosujOrazPodajWyniki;
  repeat
    Writeln;
    Writeln('Wylosowac jeszcze raz (T/N)?');
    Klawisz := UpCase(ReadKey);
    if Klawisz in ['T'] then
    begin
      LosujOrazPodajWyniki;
    end;
  until Klawisz in ['N'];
end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1