tabela

0

Jak wyrzucić z tabeli
Tabela1:array of double;
co trzeci element z rownoczesna zmiana wymiariow tej tabeli ??

0

Może tak:

var
a: array of double;
b: array of double;
i,j: integer;

begin
j:=0;
// przypisanie czegoś do "a"

for i := low(a) to high(a) do
  begin
    if not( i div 3 = 0) then
    begin
      b[j] := a[i]; 
      j:=j+1;
    end;
  end;
end;
0
type
  TDoubleArray = array of Double;

function Concat(S1, S2: TDoubleArray): TDoubleArray;overload; //nie ma takiej konieczności, ale na wszelki wypadek jakby się chciało dopisać inne wersje.
begin
  SetLength(Result, Length(S1)+Length(S2));
  Move(S1[0], Result[0], Length(S1)*SizeOf(Double));
  Move(S2[0], Result[Length(S1)], Length(S2)*SizeOf(Double));
end;

procedure Delete(var S: TDoubleArray; Index, Count:Integer);overload;
begin
  S := Concat(Copy(S, 0, Index), Copy(S, Index+Count, Length(S)-Index-Count));
end;

Użycie:
Delete(Tablica, 2, 1); //Usuwa 1 element zaczynjąc od nr 2

Aby usunąć co trzeci, to trzeba w pętelce (tylko wziąć pod uwagę, że liczba elementów się zmienia).

0
<font color=darkblue>if not( i div 3 = 0)</font>

Co oznacza ten fragment ? Bo cos mi sie knoci.

0
<font color=darkblue>if not( i div 3 = 0)</font>

Co oznacza ten fragment ? Bo cos mi sie knoci.

To znaczy jeśli różnica z dzielenia i przez 3 jest inna niż 0 - innymi słowy "jeśli i nie jest podzielne przez 3"

0

    if not( i div 3 = 0) then

No to czy nie powinno byc , zamiast powyzszego :


    if not( i div 3 <font color=red><></font> 0) then

Ale poza tym i tak wyskakuje blad EAcsessViolation w lini

b[j] := a[i];

a ja nie wiem dlaczego ? ;-(

0

Sama procedura jest dobrze, spróbuj teraz:

type
tablica = array of double;

var
a,b: tablica
i,j: integer;

begin
j:=0;
// przypisanie czegoś do "a"

for i := low(a) to high(a) do
  begin
    if not( i div 3 = 0) then
    begin
      b[j] := a[i]; 
      j:=j+1;
    end;
  end;
end;
0

aaaa juz kapuje.

  1. div zwraca 0 gdy wynik dzielenia jest real
  2. tablica nie miala przydzielonej pamieci

dzieki

0

mialo byc

  1. div zwraca reszte z dzielenia

ps: sory ale nie moglem przeedytowac poprzedniego tekstu bo zapomnialem sie zalogowac

0

Oczywiscie mi sie wydaje, ze powinno byc tak, jak zrozumial to Dry... a jesli chodzi o metode DETOX'a... to po co uzywac zaprzeczenia div'a, skoro mozna uzyc mod'a a w ogole to po co w ogole to porownanie skoro mozna uzyc w petli for parametru step 3... ;-)

0

<font color="green">skoro mozna uzyc w petli for parametru step 3... </span>

No wreszcie ktoś napisał to... długo szukam tej składni - jak umiesz napisać pętle For ze "stepem to napisz jak to się robi... nigdzie znajść nie mogę.

W C++ wiem, że jest tak:

<font color="green"> for( i=1, i =7, i+=3) {

}</span>

Ale nie wiem jak w Object Pascal napisać ten "step" żeby był 3.

0

To ja RiccoXXX pisalem to, ale nie zalogowany, bo na tym kompie brat zablokowal cookiesy, bo sie cyka... Wiec odpowiadam, w C++ widze, ze umiesz. W Pascalu to jest tak: dla samej operacji for nie ma czegos takiego jak step,ale... bardzo latwo zamienic ta petle w petle while, gdzie incrementujesz sobie o tyle, o ile ci sie podoba np.:

while (i<60) do
begin
...
...
inc(i,3);
end;

w podobny sposób nalezy przerobić tamta petle, w razie klopotow moge to zrobic(ale to jest banalnie proste). ;-)

0

Spoko, myślałem, że znasz jakiś kod na "step" przy pętli for, o to tylko mi chodziło. :) Pozdrawiam

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