Odpowiedz 
Problem z napisaniem programu w pascalu
Teekus Offline
Godlike
*****

Liczba postów: 830
Dołączył: Mar 2011

Millenium Fan Roccat Fan


Post: #1
Problem z napisaniem programu w pascalu
Witam, mam programem:
Napisz procedure, w ktorej uzytkownik wprowadza liczbe parzysta. W programie, procedura jest uruchamiana w petli az do spelnienia warunku parzystosci.

Probowalem

program procedura;
uses crt;
var a:byte;
procedure parzyste;
begin
writeln('Podaj parzysta liczbe');
readln(a);
while a mod(2)<>0 do
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
readln(a);
else
writeln('Liczba',a,'jest parzysta');
end;
begin
clrscr;
parzyste;
readkey;
end.

Dzialal dopiero po usunieciu "else xxx" i nie mam pojecia dlaczego.
Probowalem rowniez z funkcja repeat
repeat
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
readln(a);
until a mod(2)=0
else
writeln('Liczba',a,'jest parzysta);

Tutaj tez nie dzialal po wpisaniu else. Nie wiem jak to powinienem zmienic, zeby dzialalo. Prosze o pomoc.

26-03-2012 14:10
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
anagaro Offline
Killing Spree
*

Liczba postów: 36
Dołączył: Nov 2011


Post: #2
RE: Problem z napisaniem programu w pascalu
Usuń średnik przed else.

26-03-2012 14:15
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Teekus Offline
Godlike
*****

Liczba postów: 830
Dołączył: Mar 2011

Millenium Fan Roccat Fan


Post: #3
RE: Problem z napisaniem programu w pascalu
Usuwalem, nic nie dawalo.

26-03-2012 14:17
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
anagaro Offline
Killing Spree
*

Liczba postów: 36
Dołączył: Nov 2011


Post: #4
RE: Problem z napisaniem programu w pascalu
readln(a);
if a mod(2)<>0 then
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
else
writeln('Liczba',a,'jest parzysta');
readln;

(Ten post był ostatnio modyfikowany: 26-03-2012 14:26 przez anagaro.)
26-03-2012 14:22
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Peli7 Offline
Godlike
*****

Liczba postów: 709
Dołączył: Nov 2011
East: Peli7 Obserwuj grę
West: Peli7 Obserwuj grę

Roccat Fan Team Coast Fan


Post: #5
RE: Problem z napisaniem programu w pascalu
Pascala miałem dawno temu, ale na bank nie ma takiej konstrukcji jak while....else. While jest pętlą, wykonuje się póki warunek jest prawdziwy. Pamiętaj, że z pętli wyjdzie Ci tylko po wpisaniu liczby parzystej, else nie jest konieczne - usunięcie jest rozwiązaniem.

Pozdrawiam
26-03-2012 14:22
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Siadak Offline
Dominating
****

Liczba postów: 435
Dołączył: Jun 2011
West: Siadak Obserwuj grę


Post: #6
RE: Problem z napisaniem programu w pascalu
Ale co jest napisane? Jaki error?

[Obrazek: 809.gif]
"Znać prawa a nie tylko im podlegać
Wiedzieć, że je masz, umieć o nie zabiegać
"
26-03-2012 14:23
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Teekus Offline
Godlike
*****

Liczba postów: 830
Dołączył: Mar 2011

Millenium Fan Roccat Fan


Post: #7
RE: Problem z napisaniem programu w pascalu
(26-03-2012 14:23)Siadak napisał(a):  Ale co jest napisane? Jaki error?
Wymagany jest srednik ale wykryto else.


(26-03-2012 14:22)Peli7 napisał(a):  Pascala miałem dawno temu, ale na bank nie ma takiej konstrukcji jak while....else. While jest pętlą, wykonuje się póki warunek jest prawdziwy. Pamiętaj, że z pętli wyjdzie Ci tylko po wpisaniu liczby parzystej, else nie jest konieczne - usunięcie jest rozwiązaniem.

Pozdrawiam
Jezeli usune else to nie wyswietli mi ze liczba jest parzysta.


(26-03-2012 14:22)anagaro napisał(a):  readln(a);
while a mod(2)<>0 do
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
else
writeln('Liczba',a,'jest parzysta');
readln;
Jezeli "a" nie jest parzysta to powinno sie wpisywac jeszcze raz "a", tutaj jedynie pokazuje ze liczba nie jest parzysta lub jest.





Jeszcze po usunieciu else pokazuje ze kazda liczba jest nie parzysta.

(Ten post był ostatnio modyfikowany: 26-03-2012 14:28 przez Teekus.)
26-03-2012 14:26
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
anagaro Offline
Killing Spree
*

Liczba postów: 36
Dołączył: Nov 2011


Post: #8
RE: Problem z napisaniem programu w pascalu
Sprawdź jeszcze raz, edytowałem z "if..then"

26-03-2012 14:27
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Peli7 Offline
Godlike
*****

Liczba postów: 709
Dołączył: Nov 2011
East: Peli7 Obserwuj grę
West: Peli7 Obserwuj grę

Roccat Fan Team Coast Fan


Post: #9
RE: Problem z napisaniem programu w pascalu
O ile dobrze pamiętam to musisz zadeklarować początek i koniec kodu wykonywanego w pętli, spróbuj dodać coś takiego:

while a mod(2)<>0 do
begin
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
readln(a);
end;
writeln('Liczba',a,'jest parzysta');
26-03-2012 14:32
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Teekus Offline
Godlike
*****

Liczba postów: 830
Dołączył: Mar 2011

Millenium Fan Roccat Fan


Post: #10
RE: Problem z napisaniem programu w pascalu
(26-03-2012 14:27)anagaro napisał(a):  Sprawdź jeszcze raz, edytowałem z "if..then"
Musi byc petla.

Moze tak?
if a mod(2)=0 then
writeln('Liczba jest parzysta');
else
begin
while a mod(2)<>0 do
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
readln(a);


(26-03-2012 14:32)Peli7 napisał(a):  O ile dobrze pamiętam to musisz zadeklarować początek i koniec kodu wykonywanego w pętli, spróbuj dodać coś takiego:

while a mod(2)<>0 do
begin
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
readln(a);
end;
writeln('Liczba',a,'jest parzysta');
Probowalem z beginami, ale tutaj konczy sie na tym, ze program pokazuje, ze wszystkie liczby sa nie parzyste.

(Ten post był ostatnio modyfikowany: 26-03-2012 14:37 przez Teekus.)
26-03-2012 14:35
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Peli7 Offline
Godlike
*****

Liczba postów: 709
Dołączył: Nov 2011
East: Peli7 Obserwuj grę
West: Peli7 Obserwuj grę

Roccat Fan Team Coast Fan


Post: #11
RE: Problem z napisaniem programu w pascalu
Aż musiałem zainstalować free pascala i sprawdzić - mój kod działa poprawnie, przy wpisaniu dwójki przechodzi dalej.

edit: porównaj sobie z Twoim

program asd;

uses crt;
var a:byte;

procedure jeden;
begin
writeln('podaj');
readln(a);


while a mod(2)<>0 do
begin
writeln('jeszcze raz');
readln(a);
end;
writeln('przeszlo');
end;


begin
clrscr;
jeden;
readkey;
end.
(Ten post był ostatnio modyfikowany: 26-03-2012 14:59 przez Peli7.)
26-03-2012 14:46
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Teekus Offline
Godlike
*****

Liczba postów: 830
Dołączył: Mar 2011

Millenium Fan Roccat Fan


Post: #12
RE: Problem z napisaniem programu w pascalu
(26-03-2012 14:46)Peli7 napisał(a):  Aż musiałem zainstalować free pascala i sprawdzić - mój kod działa poprawnie, przy wpisaniu dwójki przechodzi dalej.

edit: porównaj sobie z Twoim

program asd;

uses crt;
var a:byte;

procedure jeden;
begin
writeln('podaj');
readln(a);


while a mod(2)<>0 do
begin
writeln('jeszcze raz');
readln(a);
end;
writeln('przeszlo');
end;


begin
clrscr;
jeden;
readkey;
end.

Dziala, wielkie dzieki. Za duzo kombinowalem z tym else ;/

26-03-2012 15:10
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 




Użytkownicy przeglądający ten wątek: 1 gości