Witam. Czy możecie mi podać sposób, w jaki zamienia się wartości w tablicy jednowymiarowej? Chodzi o to, że jak na przykład mam 5 elementów, to żeby wartość pierwszego elementu przyjęła wartość drugiego elementu, wartość drugiego elementu przyjęła wartość pierwszego, wartość trzeciego przyjęła wartość czwartego elementu i wartość czwartego elementu przyjęła wartość trzeciego elementu.
Trzeba użyć zmiennej tymczasowej. W twoim wypadku wystarczy 1element tablicy zapisać do zmiennej, wszystko przesunąć 1element wstecz, po czym do ostatniego elementu zapisać (lub nie, bo takowej informacji w twoim poście brak) zmienną z indeksu 1.
Np:
tmp:=t[1];
for i:=2 to 5 do
t[i-1]=t[i];
t[5]:=tmp;
Dzięki, ale czy na pewno dobry kod?
program komorki;
uses crt;
var
A:ARRAY[1..6] of integer;
i,pom:integer;
begin
clrscr;
for i:=1 to 6 do A[i]:=i;
for i:=1 to 6 do write(A[i],',');
readln;
pom:=A[1];
for i:=2 to 6 do
A[i-1]:=A[i];
A[6]:=pom;
write(A[i-1],' ');
readln;
end.
Chcę, żeby pierwsza wartość zamieniła się z drugą, trzecia z czwartą, a piąta z szóstą. Tak nie jest.
Rzeczywiście nie, opacznie zrozumiałem (myślałem że chcesz przesunąć wszystko o 1 do początku)
i:=1;
repeat
pom:=A[i];
A[i]:=A[i+1];
A[i+1]:=pom;
i:=i+2;
until i=6
Zwiększasz co 2 (więc nie używasz for), zamieniasz jak w poprzednim zamyśle następny z obecnym.
Ok, a teraz, jak chcę to wyświetlić, to gdzie mam dać write- w pętli, czy poza nią i co ma być napisane-pom czy A_?_
Widzę po liczbie zakładanych wątków, że brakuje Ci podstaw algorytmicznych. Sugeruję zapoznanie się z tym tematem - książki lub coś w internecie, np.:
Już doszedłem do ładu- tylko nie until i=6 tylko i=7
program komorki;
uses crt;
var
A:ARRAY[1..6] of integer;
i,pom:integer;
begin
clrscr;
for i:=1 to 6 do A[i]:=i;
for i:=1 to 6 do write(A[i],',');
readln;
i:=1;
repeat
pom:=A[i];
A[i]:=A[i+1];
A[i+1]:=pom;
write(A[i],',');
write(pom,',');
i:=i+2;
until i=7;
readln;
end.
Teraz jest cacy.
Na pewno mi brakuje podstaw, bo straciłem prawie całą drugą klasę liceum- nauczyciel był taki, że max. co 5 lekcji mieliśmy normalną lekcję, a tak, to pozwalał nam robić, co chcemy. Teraz jestem w 3. klasie, zdaję maturę i sobie myślę, że ciężko będzie przyswoić sobie algorytmikę. Bo w Pascalu podstawy i trochę więcej znam.
Zamiast
until i=7;
lepiej używać konstrukcji
until i>6;
bo jeśli zmienisz krok iteracji (teraz 2), to znów nie “trafisz” w koniec zakresu, a taka nierówność jest bezpieczna.
Myślę, że nauka (przedmiotów) w szkole to jedno, a zajęcia dodatkowe (w domu) to drugie. Jeśli to jest potrzebne tylko do szkoły, to się nie czepiam, ale jeśli planujesz coś więcej programować, to warto nieco przysiąść nad podstawami.