Re: SAIL - Remove

Gotowe kody SAIL'a, informacje na temat moddingu, itd.

Moderator: zoNE

Post Reply
User avatar

Topic author
zoNE
The Great Uniter & Site Administrator
The Great Uniter & Site Administrator
Posts: 1440
Joined: Fri Feb 17, 2006 3:44 pm
Location: Poland
Contact:

Re: SAIL - Remove

#1

Post by zoNE » Tue Nov 22, 2016 9:42 am

Serpent wrote:Napisałem taką oto funkcję której zadaniem jest usuwanie podanej wartości z tablicy jedno- lub dwuwymiarowej.

Code: Select all

Export Function Remove(tab, value, mode);
var i, j, tmp;
begin
i := 1;

     while(i <= tab) do
       begin
       if not tab[i] then
          break;

       if value in tab then
          begin
          if not mode then
             tab := tab diff value
              else
               for j = 1 to tab do
                   if tab[j] = value then
                      begin
                      tab := Delete(tab, j);
                      break;
                      end;

          i := i - 1;

          if mode then
             break;
          end
           else
            if tab[i] and value in tab[i] then
               begin
               if not mode then
                  tmp := tab[i] diff value
                   else
                    for j = 1 to tab[i] do
                        if value = tab[i][j] then
                           begin
                           tmp := Delete(tab[i], j);
                           break;
                           end;

               if tmp = [] then
                  begin
                  tab := Delete(tab, i);
                  end
                   else
                    tab := Replace(tab, i, tmp);

               i := i - 1;

               if mode then
                  break;
               end;

       i := i + 1;
       end;

result := tab;
End;
Remove(tab, value, mode);
- tab -> tablica z jakimiś wartościami
- value -> wartość
- mode -> tryb, jeżeli ustawimy na true wówczas zostanie usunięta tylko pierwszy znaleziony element w tablicy równy podanej wartości, jeśli false wówczas wszystkie elementy równe podanej wartości zostaną usunięte
Przykład użycia:

Code: Select all

Every 1 do
var tab;
begin
tab := [[3, 4], [4, 5], [3, 3, 3]];
tab := Remove(tab, 3, false);
display_strings := tab;
End;

// Zwróci [4, [4,5]] ponieważ wszystkie trójki zostaną skasowane
Serpent wrote:Żeby usunąć kilka wartości:

Code: Select all

Export Function RemoveAll(tab, values);
var i;
begin
for i = 1 to values do
    tab := Remove(tab, values[i], false);
result := tab;
End;
Przykład:

Code: Select all

tab := [[1,2,3], [3,2,9]];
tab := RemoveAll(tab, [1,2]);
Zwróci [3, [3,9]].
Author: Serpent
Topic: viewtopic.php?f=42&t=4805
PC MB: MSI Z97-G43 | CPU: Intel Xeon E3-1231v3 3.4GHz + Raijintek EreBoss | RAM: HyperX 2x8GB 1866MHz DDR3 CL9 | GPU: MSI GeForce GTX 970 100ME 4GB GDDR5 (256bit) | SSD: Crucial BX100 250GB | HDD: 4TB | LCD: EIZO FlexScan 22" S2243W Black | AUDIO: Asus Xonar D2 + KODA DRA-660 + KODA AV-701 + SW-550 v2 + Sennheiser HD 595 | OS: Windows 10 Pro
Laptop DELL Precision M6500 CPU: i5-520M RAM: 8GB DDR3 SSD: 128GB HDD: 500GB GPU: ATI FirePro M7740 1GB DDR5 OS: Windows 7 Ultimate 64-bit

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest