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

question-closed Gdzie jest błąd?

Object Storage Arubacloud
0 głosów
268 wizyt
pytanie zadane 15 października 2015 w Inne języki przez Sinnley Stary wyjadacz (12,810 p.)
zamknięte 3 listopada 2015 przez Eryk Andrzejewski
Program powinien pisać linijkę 10 iksów od prawej do lewej, to co się dzieje wcześniej jest nieistotne, to takie testy.

 

 

uses crt;
VAR

a,b,c,h: byte;

BEGIN
b:=25;
c:=1  ;
h:=5;
clrscr;
    gotoxy(b,5);
        write('s');

        
        write(wherex);
        readkey;
        clrscr;
        for a:=1 to 10 do
        begin
        
        gotoxy(wherex  - 2,h);
        write('x');
        
        
        end;
        
        
        
    readkey;
END.
komentarz zamknięcia: Tytuł pytania nie opisuje treści, kod nie jest w bloku CODE

2 odpowiedzi

0 głosów
odpowiedź 15 października 2015 przez Boshi VIP (100,240 p.)
Pozbądź się Goto tego się nie używa.
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Po pierwsze, jeśli usunę to co mam wpisać zamiast tego?

Po drugie - chciałbym tego użyć, nie wiem tylko gdzie jest błąd, wyskakuje error 201.
komentarz 15 października 2015 przez Boshi VIP (100,240 p.)
Zakoduj sobie, nie używa się tego i koniec.

skoro ma to być coś takiego xxxxxxxxxxxxxx to po prostu pętla do 10 i write('x')
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Tak, ale ma się to napisać od prawej do lewej, dlatego cofam kursor o 2 miesca w lewo i uzywam do tego gotoxa, a muszę go użyć bo mam takie zadanie domowe, wiem, że to durne, ale cóż...
komentarz 15 października 2015 przez Boshi VIP (100,240 p.)
To z tym goto ci nie pomogę, bo nie pamiętam jak to ustrojstwo działało nawet już. (Miałęm to 2 lata temu) w każdym razie nie używa się tego nigdzie.

 

Można to zrobic w inny sposób.  Zaczynasz od pewnego miejsca które sobie wyznaczasz spacjami i cofasz się aż do ilości Iksów jakie masz w lewą stronę zmniejszając za każdym razem licznik pętli.
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Mógłbyś opisać to kodem? Jak mam się inaczej cofnąć?
0 głosów
odpowiedź 15 października 2015 przez furas Maniak (53,800 p.)
`gotoxy(wherex - 2, h)` w każdym przejściu pętli ustawia kursor dokładnie w tym samym miejscu bo `wherex-2` zawsze ma tą samą wartość.

Powinieneś tam użyć raczej `wherex-a` lub `wherex-2-a` bo w każdym przejściu pętli `a` będzie miało inną wartość a zatem i `wherex-a` będzie przyjmować inną wartość.

--

ps. na forum jest specjalny przycisk do wstawianai kodu przez co jest kolorowany i bardziej czytelny. Oprócz tego warto zadbać aby kod był dobrze sformatowany (odpowiednie wcięcia, bez zbędnych pustych linii, itp.) bo to też nam pomaga zrozumieć jego działanie.
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)

To nie jest problem, bo po pierwsze nie sprawiłoby to errora, tylko podmieniło znak i 10 razy x napisał by się w tym samym miejscu, a po drugie nawet taki kod powoduje błąd:

uses crt;
VAR

a,b,c,d,h: byte;


BEGIN
b:=25;
c:=1  ;
h:=5;
clrscr;
	
		d:= wherex - 2;
		write(d);
		
		
		
		
	readkey;
END.

 

komentarz 15 października 2015 przez furas Maniak (53,800 p.)
Po pierwsze w swoim opisie nic nie napisałeś o errorze i to jest twój pierwszy błąd :)

Po drugie jak dostajesz błąd to go przytaczaj na forum bo z samej treści (bez zaglądania do kodu) można czasami powiedzieć w czym jest problem.

W nowym kodzie używasz zmiennej `wherex`. A gdzie ją zadeklarowałeś ???
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
wherex to nie zmienna, a procedura, która zwraca pierwszą współrzędną, na które znajduje się kursor. Tak więc nie jest to problem.
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Ok, problem rozwiązany, pomógł mi kolega. To przez clscr, zerowało mi rzędną do 1, i dlatego wherex -  2 dawało wartość " - 1 ", która z kolei nie mieści się w zakresie byte.
komentarz 15 października 2015 przez furas Maniak (53,800 p.)
To wciąż zostają dwie drogi
1. przeczytać komunikat z errorem bo może coś tam jest ciekawego.
2. usuwać kolejne linie aż zadziała to wtedy będzie dokładnie wiadomo, w której jest problem a wtedy będzie się można zająć analizą tej linii.
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
error 201 oznacza wyjście poza zakres, w tym wypadku zakres możliwości zmiennej typu byte
komentarz 15 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Oraz wiadomo gdzie był error, po to wcześniej te wszystkie readkey;

W ten sposób każde polecenie trzeba zatwierdzić enterem, więc wiadomo, że problem był w przypisaniu do zmiennej d.

Podobne pytania

–1 głos
0 odpowiedzi 139 wizyt
pytanie zadane 14 czerwca 2020 w PHP przez x_000 Obywatel (1,460 p.)
+1 głos
2 odpowiedzi 236 wizyt
0 głosów
2 odpowiedzi 162 wizyt
pytanie zadane 20 października 2015 w C i C++ przez Piotr Karaś Początkujący (460 p.)

92,624 zapytań

141,482 odpowiedzi

319,823 komentarzy

62,005 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!

...