ďťż

Ładny brzuch

Witam, napisałem program B) , ale przy kompilowaniu wyskakuje bład.Kompilator Pokazuje linijkę, którą zaznaczyłem w kodzie(konkretnie przed słowem "ELSE"):


problem rozwiązany ;)

W programie chodzi o to, że po wpisaniu kodu "4 8 15 16 23 42" ma się wyświetllić tekst, a po wpisaniu błędnego kodu "System Failure".Coś robię źle?Gdzie popełniłem błąd? ;)
Użytkownik Xamil edytował ten post 24 czerwiec 2006, 18:36


end (bez średnika)

ELSE

begin
Użytkownik Cyrkiel edytował ten post 18 czerwiec 2006, 12:32
Tak btw pewnie kompilator Ci to napisał, że za dużo tam średnik:/

Dzięki, teraz działa.ALe czemu bez średnika? Uczę się pascala z kursu, i tam pisze ze potrzebny jest średnik.



Przed else nigdy nie ma średnika :)

http://www.pascal.eu.org/lekcja2.htm

Hmm...
Gdzieś ty tam wyczytal ze przed elsem ma być srednik...
Pomyliło Ci sie z C...bo tam srednik faktycznie jest, ale nie w paskalu...

Instrukcja Grupująca Begin End I w kodzie "przykładowego" programu jest średnik po "end"

To nic... Nigdy przed else nie stawiamy srednika, nie wazne czy on stoi po end czy po jakiejs procedurze :)


WriteLn('Podałeś liczbę większą niż 100') ELSE  i gdzie tamś rednik??:|
Program ten można zapisać również w takiej postaci abyś widział że faktycznie po IF, THEN, oraz ELSE nie ma tych nieszczęsnych średników. cytat z tego kursu:).
Użytkownik MAtifreeman edytował ten post 18 czerwiec 2006, 20:04
Ok, widać ze nieuważnie przeczytałem tamta lekcję.Tzn. teraz pamiętam jak to czytałem, ale zapomniałem o tym ;)

Stworzyłem procedury, a potem program.Zrobiłem pętlę, która powinna kończyć się wciśnięciem przycisku "ESC" a jednocześnie kończąc program, ale tak się nie dzieje.Co trzeba zrobić, aby po wciśnięciu przycisku ESC, program się zamknął?

Begin  REPEAT      If wybor=1 Then info;      If wybor=2 Then wpiszkod;      koniec:=readkey;  UNTIL koniec=#27; End.

Najlepiej uszczuplić kod i zrobić np tak:uses crt; var  wybor: char; begin  repeat    if wybor='1' then writeln('lol');    if wybor='2' then writeln('lol2');    wybor:=readkey;  until wybor=#27; end.
Użytkownik reVis edytował ten post 19 czerwiec 2006, 22:46
dzieje się ;)
może zmienna wybor przyjela wartosc 1 lub 2 i program nonstop skacze ci do innej funkcji :huh:

mozna i tak IMO lepiej

begin
while key<>#27 do
  key := readkey;
end.

Użytkownik __avas__ edytował ten post 19 czerwiec 2006, 22:49
a może
begin  key := readkey;  case (key) of   #49: info;   #50: wpiszkod;   #27: exit;   else writeln('podano zly klawisz!');  end; end;

#49 to w ascii "1", a #50 "2". Podałem tak, bo kompilator może się czepiać wartości integer (w pascalu chyba nie można było case_of-ać stringów).
Nie jestem pewien co do poprawności kodu.. ;)
Użytkownik DJ_ProG edytował ten post 20 czerwiec 2006, 06:45

#49 to w ascii "1", a #50 "2". Podałem tak, bo kompilator może się czepiać wartości integer (w pascalu chyba nie można było case_of-ać stringów).
Nie jestem pewien co do poprawności kodu.. ;)
Za to można case'ować znaki (char) ;)

Tutaj mozecie pobrać ten program.Można jakoś zrobić, aby po wciśnięciu "1", od razu pojawiało się info, a nie tak jak teraz ze najpierw wciskam "1" które pojawia się na ekranie, i dopiero po wciśnięciu "Enter" włącza się info?

Przecież sam w przykładzie dałeś funkcję readkey która nie wymaga potwierdzenia przez Enter.

Jak nie wymaga?To czemu w programie nic się nie dzieje, aż do wciśnięcia enter'a?


Jak nie wymaga?To czemu w programie nic się nie dzieje, aż do wciśnięcia enter'a?

Pozostał mi tylko problem nie działających znaków ASCII (chr(29), #29 itd.)Nie mam pojęcia, czemu nie działają, program na nie nie reaguje.
Użytkownik Xamil edytował ten post 21 czerwiec 2006, 21:37
to może ord() ?
begin key := readkey; case (ord(key)) of { <<< ORD()  }  #49: info;  #50: wpiszkod;  #27: exit;  else writeln('podano zly klawisz!'); end; end;
tylko nie jestem pewien.. ale jak nie pójdzie, wywal "#"... może tak ;)

Zrobiłem sobię menu w trybie tekstowym,sterowane strzałkami i po "najechaniu" na opcję w menu, za "paskiem" który podświetla opcję miga kursor.Można się go jakoś pozbyć?

http://img234.images.../program7xm.jpg
Użytkownik Xamil edytował ten post 24 czerwiec 2006, 01:51
Mam program:

Begin    For o:=108 downto 0 do    Begin     wersja;     GotoXY(40,8);     write(o);     Delay(1000);     Clrscr;   End; wpiszkod; End.

Program odlicza 0d 108 do 0, potem włącza się procedura, w której trzeba wprowadzić kod.Chciałbym, aby ta procedura włączała się gdy do końca odliczania zostało 10 sekund, ale żeby odliczanie działalo nadal, a po dojściu do zera właczała się jeszcze inna procedura.Czyli żeby odliczanie trwało 108 sekund, a ostatnie 10 sekund to czas na wpisanie kodu, jeśli nie wpisze się go na czas, włącza się procedura np. "blad", a jeśli się zdąży, to uruchamia się procedura "dobrykod". (ale namotałem)Próbowałem z pętlami, instrukcją "if then else", ale wyszło mi tylko coś takiego, ze gdy do odliczania zostało 10 sekund, włącza się mozliwośc wpisania kodu, a odliczanie znika.Ktoś coś poradzi, aby odliczało dalej?? ;)
Użytkownik Xamil edytował ten post 24 czerwiec 2006, 18:36
Pomoże mi ktoś?

zeby tak prosto zrobic potrzebna bylaby wielowatkowosc, a tego w pascalu nie ma :( (przynajmniej w turbopascalu). ostatecznie mozesz zrobic tak ze puszczasz petle ktora zlicza sekundy i robi cos takiego (z tego co pamietam z pascala, popraw sobie :P )
if (keypressed) then begin readkey(znak); haslo:=haslo+znak; if (haslo=poprawne_haslo) then ....
oczywiscie w ten sposob nie bedzie dalo sie cofac znakow jesli sam tego nie zaimplementujesz :)

Chyba to nie dokońca to, ale to chyba najlepszy sposów. tutaj by potrzbne były wątki z Object Pascala. Może tak. W sprawdzaniu czasu sprawdzasz czy zosatło już 10 sekund, jeśliu tak to pojawia ię napis Żeby podać hasło, dalej możesz zastosować to co napsiał Deadeye. Jeżeli odliczanie dojdzie do końca to znaczy, że hasło nie zostało podane. Jeżeli podane będzie dobre hasło to np. przy pomocy goto wychodzisz z pętli. Ja bym tak to zrobił:).

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •