• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Gdzie jest bład

Object Storage Arubacloud
0 głosów
263 wizyt
pytanie zadane 11 października 2015 w Inne języki przez Sinnley Stary wyjadacz (12,810 p.)
zamknięte 3 listopada 2015 przez Eryk Andrzejewski
Gdzie jest błąd? Pojawia się on gdy podmieniam wartość y wartością o 1 większą w sposób y:= y + 1; Jeśli po prostu w to miejsce wpiszę y:= 5; to wszystko działa. Wypada error 201, który chyba oznacza, że wypadam poza tablicę, ale nie mogę zrozumieć dlaczego o.O

 

uses crt;
VAR
pole: array[1..20,1..20] of char;

i,j,k,l,x,y:integer;

BEGIN

clrscr;
x:=10;
y:=4;
for i:=1 to 20 do
begin
gotoxy(x,y);
for k:=1 to 2 do
begin
for j:=1 to 20 do
begin

pole[x,y]:= '+';
write(pole[x,y]);
y:= y + 1;
end;
end;

 

end;
readkey;
END.
komentarz zamknięcia: Tytuł pytania nie opisuje treści, kod nie jest w bloku CODE

1 odpowiedź

0 głosów
odpowiedź 11 października 2015 przez furas Maniak (53,800 p.)

Kod y := y + 1; jest w pętli for więc wartość zmiennej y zwiększa się najpierw do 5, potem do 6, potem do 7 itd. aż zwiększy się do 21 i wtedy program chce pobrać pole[x,21], które nie istnieje.

Dodaj sobie więcej write aby wypisywał Ci zawartość różnych zmiennych i wtedy będziesz widział co się dzieje podczas wykonywania programu. To jest może prymitywny ale prosty i często skuteczny sposób na szukanie błędów i uczenie się :)

przy okazji: w edytorze jest specjalny przycisk do wstawiania kodu przez co będzie on kolorowany i bardziej czytelny. Nie zapomnij też o odpowiednim sformatowaniu kodu - robić wcięcia - bo to też poprawia czytelność. Nieczytelnych kodów ludzie nie chcą oglądać i pomagać.

komentarz 11 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Problem w tym, że nawet jak pojemność miejsc w tablicy zwiększam do [1..300,1..300] to błąd dalej występuje.
komentarz 11 października 2015 przez furas Maniak (53,800 p.)

Spójrz, że to dodawanie masz w "for j:=1 to 20", które jest w "for k:=1 to 2", ktore zaś jest w "for i:=1 to 20" co ostatecznie sprawia, że to dodawanie będzie wykonane z 20*2*20 razy czyli z 800 razy. Ostatecznie więc y będzie miało wartość około 804

komentarz 11 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Dobra, rozumiem, dzięki :)

Podobne pytania

0 głosów
3 odpowiedzi 380 wizyt
pytanie zadane 4 lipca 2016 w C i C++ przez jaciekrece Nowicjusz (170 p.)
0 głosów
0 odpowiedzi 371 wizyt
0 głosów
1 odpowiedź 161 wizyt

92,632 zapytań

141,502 odpowiedzi

319,882 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...