Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z Free Pascal. Proszę o pomoc.

Ostatnio zmodyfikowano 2021-11-07 23:41
Autor Wiadomość
Gosia_2003
Temat założony przez niniejszego użytkownika
Problem z Free Pascal. Proszę o pomoc.
» 2021-11-07 22:31:09
Cześć Wszystkim,
Chodzę do szkoły programowania i jednym z zadań jest napisanie programu w Lazarusie, konkretniej programu, który liczy czy rok jest przystępny czy nie jest.
Napisałam program i wygląda on tak:
Program RokPrzestepny;
Var
 rok : Integer;
Begin
 Write( 'Podaj rok: ' );
 ReadLn( rok );
 If (rok Mod 400 = 0) Or ((rok Mod 4 = 0) And Not(rok Mod 100 = 0)) Then
 WriteLn( 'Przestepny' )
 Else
 WriteLn( 'Zwykly' );
End.

Problem polega na tym, że po uruchomieniu programu i wpisaniu roku program kończy swoje działanie wyświetleniem komunikatu,,Wykonanie zatrzymane". Nie wyświetla mi nię na czerwono, żadna informacja. Zrobiłam rozeznanie w internecie,ale niczego nie mogę znależć.
Czy ktoś ma pomysł co jest nie tak?
POzdrawiam, Gosia
P-179045
DejaVu
» 2021-11-07 22:33:27
a nie brakuje średnika po przestępny? :) czy w pascalu można było czasem średniki pomijać?
P-179046
Gosia_2003
Temat założony przez niniejszego użytkownika
» 2021-11-07 22:42:39
Chodzi o średnik po WriteLn( 'Przestepny' ) ? Wtedy else wyświetla się na czerwono.:(
P-179048
pekfos
» 2021-11-07 22:53:43
Wygląda że działa tak jak jest.
https://ideone.com/vE4hBe
https://ideone.com/BgNILE
P-179049
Gosia_2003
Temat założony przez niniejszego użytkownika
» 2021-11-07 23:19:23
Dziękuję serdecznie wszystkim za pomoc.
Dokonałam poprawki i dodałam readln() na koniec;
Program RokPrzestepny;
Var
 rok : Integer;
Begin
 Write( 'Podaj rok: ' );
 ReadLn( rok );
 If (rok Mod 400 = 0) Or ((rok Mod 4 = 0) And Not(rok Mod 100 = 0)) Then
 WriteLn( 'Przestepny' )
 Else
 WriteLn( 'Zwykly' );
 Readln()
End.

 i teraz działa, to znaczy po zapytaniu o rok określa mi czy rok jest zwykły czy przestępny i nie zatrzymuje się tuż po wpisaniu roki.
Nie rozumiem czemu Wam działa bez tego tzn. bez readln() ,a mi bez tego nie działał.
To wina samego Lazarusa?
P-179050
pekfos
» 2021-11-07 23:41:11
Jeśli to pomogło, to źle uruchamiasz swój program. Programy konsolowe powinny być uruchamiane przez terminal. IDE powinno mieć jakąś opcję by podtrzymywać okno konsoli po zakończeniu pracy programu, żeby nie trzeba było pisać takich hacków jak dodatkowy input na końcu programu.

https://wiki.freepascal.org/Console_Mode_Pascal
Próbowałbym z tym

Run in IDE

[..]
After your program has finished execution, a message "Press enter" appears on the screen. Thus any output your program generated will remain on the screen until you have had a chance to read it; after you press 'enter' the console window closes.

P-179051
« 1 »
  Strona 1 z 1