Skocz do zawartości


Zdjęcie

Problem z napisaniem programu w pascalu


  • Zaloguj się, aby dodać odpowiedź
11 odpowiedzi w tym temacie

#1 Teekus

Teekus
  • Użytkownik
  • 821 postów
  • Dołączył: 16 Mar 2011

Napisano 26 March 2012 - 14:10

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.

When I wake up early in the morning
Lift my head, I'm still yawning
When I'm in the middle of a dream
Stay in bed, float up stream


Akcja Poomoc

Dolan

#2 anagaro

anagaro
  • Użytkownik
  • 11 postów
  • Dołączył: 08 Nov 2011

Napisano 26 March 2012 - 14:15

Usuń średnik przed else.

#3 Teekus

Teekus
  • Użytkownik
  • 821 postów
  • Dołączył: 16 Mar 2011

Napisano 26 March 2012 - 14:17

Usuwalem, nic nie dawalo.

When I wake up early in the morning
Lift my head, I'm still yawning
When I'm in the middle of a dream
Stay in bed, float up stream


Akcja Poomoc

Dolan

#4 anagaro

anagaro
  • Użytkownik
  • 11 postów
  • Dołączył: 08 Nov 2011

Napisano 26 March 2012 - 14:22

readln(a);
if a mod(2)<>0 then
writeln('To nie jest liczba parzysta, sprobuj jeszcze raz');
else
writeln('Liczba',a,'jest parzysta');
readln;

#5 Peli7

Peli7
  • Użytkownik
  • 597 postów
  • Dołączył: 20 Nov 2011

Napisano 26 March 2012 - 14:22

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

#6 Siadak

Siadak
  • Użytkownik
  • 300 postów
  • Dołączył: 30 Jun 2011

Napisano 26 March 2012 - 14:23

Ale co jest napisane? Jaki error?
Dołączona grafika
"Znać prawa a nie tylko im podlegać
Wiedzieć, że je masz, umieć o nie zabiegać
"

#7 Teekus

Teekus
  • Użytkownik
  • 821 postów
  • Dołączył: 16 Mar 2011

Napisano 26 March 2012 - 14:26

Ale co jest napisane? Jaki error?

Wymagany jest srednik ale wykryto else.


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.


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.

When I wake up early in the morning
Lift my head, I'm still yawning
When I'm in the middle of a dream
Stay in bed, float up stream


Akcja Poomoc

Dolan

#8 anagaro

anagaro
  • Użytkownik
  • 11 postów
  • Dołączył: 08 Nov 2011

Napisano 26 March 2012 - 14:27

Sprawdź jeszcze raz, edytowałem z "if..then"

#9 Peli7

Peli7
  • Użytkownik
  • 597 postów
  • Dołączył: 20 Nov 2011

Napisano 26 March 2012 - 14:32

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');

#10 Teekus

Teekus
  • Użytkownik
  • 821 postów
  • Dołączył: 16 Mar 2011

Napisano 26 March 2012 - 14:35

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);


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.

When I wake up early in the morning
Lift my head, I'm still yawning
When I'm in the middle of a dream
Stay in bed, float up stream


Akcja Poomoc

Dolan

#11 Peli7

Peli7
  • Użytkownik
  • 597 postów
  • Dołączył: 20 Nov 2011

Napisano 26 March 2012 - 14:46

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.

#12 Teekus

Teekus
  • Użytkownik
  • 821 postów
  • Dołączył: 16 Mar 2011

Napisano 26 March 2012 - 15:10

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 ;/

When I wake up early in the morning
Lift my head, I'm still yawning
When I'm in the middle of a dream
Stay in bed, float up stream


Akcja Poomoc

Dolan




Polecane:leagueoflegends |planets3 | MyDisco.pl | LOL