Panowie, może ktoś rzucić okiem? W Dev-Pascalu ten fragment kompilował się, a w Lazarusie już nie chce..

for k:=1 to n do
begin
writeln(a[k]:4:2,' ',a[k+1]:4:2,' ',a[k+2]:4:2);
inc(k,2);
end;

Dostaję komunikat:

Error: Illegal assignment to for-loop variable "k"


Jak inaczej mogę to rozwiązać? Bardzo potrzebuję tego zwiększania licznika o 2 po każdym "przebiegu" bo inaczej mój program nie ma sensu.

#programowanie #pascal
@strusmig: nie wolno zwiększać zmiennej wykorzystywanej w pętli. Ba - to nawet fizycznie nie jest zmienna, więc nie masz do niej dostępu. Nie wiem jak działa dev-pascal, ale komunikat masz godnie ze sztuką - jest to niezgodne ze standardem.
Możesz próbować wariantu while, repeat, albo continue w for do przeskoczenia obiegu

edit: możesz spróbować przełączenie opcji zgodności z Turbo Pascalem w ustawieniach, ale wg nie powinno się tak robić

edit 2:
  • Odpowiedz
@PrawieJakBordo: Pierwsza metoda jest poprawna, tylko nie średników po end dopóki nie kończysz całego ifa:

if () then begin
kod
end else if () then begin
kod
end else if () then begin
kod
end else begin
kod
end;
  • Odpowiedz
Mirki z programowanie. Robię zadanie z #pascal , w którym program ma zsumować wszystkie wypisane parametry podane przez użytkownika.

Co mam źle, że program działa, ale gaśnie? :|

program zadanie1;
uses sysutils;

var
suma : Integer;
a : Integer;

begin
suma := 0;
for a := 1 to ParamCount do
suma := suma + StrToInt(ParamStr(a));

Writeln('Suma twoich argumentów to ', suma);
end.
  • 1
@PrawieJakBordo lepiej by było jak by wam kazali usiąść do czegoś w stylu Code academy czy Free Code camp bez nauczyciela niż robili takie coś :)
Albo on by mógł sam to zrobić, lepiej by było zrobić wam potem semestr choćby podstaw z Pythona czy html+css niż nawet zaawansowany kurs na pascalu
  • Odpowiedz
#programowanie #pascal Proszę o pomoc sprawdźcie mi kod, wiem jestem lewy z programowania i siedziałem nad tym cały wczorajszy dzień ale i tak mi to nie działa ;/

program biblioteka ;

Type data1=record
dzien: 1..31;
miesiac: 1..12;
rok:1900..2016;
end;

type calosc=record
tytul: string[30];
druk:data1;
prawda:string[1]
end;

type
tab= array [1..20] of calosc ;

var
baza:calosc;
data:data1;
l:tab;

procedure wpisz(var l:tab);
var i: integer;
begin
for i:=1 to 3 do
begin
with l[i]
@ToraniXo: wpisz:
robisz "with L", a wczytujesz do baza.tytul (lokalna zmienna)

Wyświetlanie - trzy razy (przez "a") próbujesz wyświetlić coś co iterujesz po "i"

Ciężko się to czyta. "calosc" powinna się chyba nazywać "książka", jakieś "L" niech będzie jakimś zbiorem, a nie "L". Nie wiadomo co do czego służy i przez to się sam gubisz.
  • Odpowiedz
program Project1;

var
tab:array[0..2,0..2,0..2] of integer;

begin

tab[0,0]:=1;
tab[0,1]:=3;
tab[0,2]:=5;
tab[1,0]:=sqr(tab[0,0]);
tab[1,1]:=sqr(tab[0,1]);
tab[1,2]:=sqr(tab[0,2]);
tab[2,0]:=sqrt(tab[0,0]);
tab[2,1]:=sqrt(tab[0,1]);
tab[2,2]:=sqrt(tab[0,2]);
writeln(tab[0,0],tab[0,1],tab[0,2],tab[1,0],tab[1,1],tab[1,2],tab[2,0],tab[2,1],tab[2,2]);
readln;

end.

Dopiero zaczynam Pascala i przy robieniu prostej tabeli przy bardziej rozbudowanej w wiersze wyskakują błędy
Compile Project, Target: C:\Users\VeB\AppData\Local\Temp\project1.exe: Exit code 1, Errors: 10
project1.lpr(9,11) Error: Incompatible types: got "ShortInt" expected "Array[0..2] Of LongInt"
project1.lpr(10,11) Error: Incompatible types: got "ShortInt" expected "Array[0..2] Of LongInt"
project1.lpr(11,11) Error: Incompatible types: got "ShortInt" expected "Array[0..2] Of
@export: znów zgaduję. Najprawdopodobniej tablica inicjowana jest zerami. Twój przykład wypisuje elementy zainicjowanej tablicy - czyli zera.
  • Odpowiedz
@Pabick: Jeszcze nie mam - sa w drodze. Mozna je dowolnie ustawiac. Kolory i schematy. Podswietlenie gorne pokazuje poziom obciazenia procesora.
Ponizej masz troche wiecej o mozliwosciach konfiguracji (ang.)

d.....k - @Pabick: Jeszcze nie mam - sa w drodze. Mozna je dowolnie ustawiac. Kolory ...
  • Odpowiedz
Mam takie o zadanie z pascala.
3. Napisz funkcję, która dla podanej n-elementowej tablicy t i liczby k zwraca tak poprzestawianą tablicę, że dla 1<=i<k zachodzi t[i]<t[k] oraz dla k+1<=i<=n zachodzi t[k]<=t[i]
Jak to zrobić by złożoność funkcji nie była większa od n*k? Chodzi mi o sam pomysł.
Z góry dzięki.
#programowanie #pascal
Dopiero zaczynam zabawę z programowaniem, ale przy okazji pisania własnej listy pojedynczo/podwójnie wiązanej zastanawiałem się czy przełączanie wskaźników znacząco oszczędza pamięć niż proste przekopiowanie danych. Tu i tu musimy stworzyć pomocnicze zmienne, a w przypadku kopiowania danych możemy po zakończonej operacji zwolnić pamięć pomocniczego rekordu.
Oczywiście przy dużej liczbie danych zaczniemy tracić czas, ale wydaje mi się, że jest to mniej inwazyjny sposób niż przełączanie wskaźników.
Tak wiem, są już gotowe listy