Program z instrukcją case i pętlą repeat

0

Program działa, tylko po wciśnięciu np. 1 i wyświetleniu napisu INFORMATYKA znów pojawia się informacja z możliwymi opcjami do naciśnięcia, natomiast chciałbym żeby tego nie było. Dodanie pętli repeat przed samą instrukcją case powoduje że np. po naciśnięciu 1 napis INFORMATYKA wyświetla się bez końca.

var cyfra:integer;

begin
Repeat
Writeln('(1)tekst');
Writeln('(2)oblicz');
Writeln('(3)gwiazdki');
Writeln('(4)koniec');
Write('Wprowadz cyfre od 1 do 4:');
Readln(cyfra);

case cyfra of
1: Writeln('INFORMATYKA');
2: Writeln('kwadrat liczby 2=', sqr(cyfra));
3: Writeln('***');
4: Writeln('koniec') ;
end;
Until cyfra=4;



end. 
0

Po pierwsze TAG!!! Tak, tagujemy nawet wątki w dziale tematycznym. Po drugie formatowanie kodu. Po trzecie tematy z banalnymi podstawami piszemy w dziale Newbie!!! Po czwarte logiczne chyba, że program działa jak działa, skoro tylko wybranie 4 go zakończy. Chcesz żeby wyświetalił co potrzeba i się zakończył to zmień warunek pętli, na przykład na until Cyfra in [1..4]; i dodaj Readln; na końcu, jeżeli chcesz aby okno konsoli uruchomione poza wierszem poleceń czy ConEmu się nie zamykało i żebyś zdążył przeczytać co program wyświetlił. To będzie czekał na enter.

0

Program działa, tylko po wciśnięciu np. 1 i wyświetleniu napisu INFORMATYKA znów pojawia się informacja z możliwymi opcjami do naciśnięcia, natomiast chciałbym żeby tego nie było.

Program działa dokładnie tak, jak mu nakazałeś, więc jeśli nie napisałeś instrukcji zatrzymujących (głupio brzmi, ale chodzi o ReadLn żeby czekał na input) to dalej będzie pokazywał listę; Co to ma znaczyć natomiast chciałbym żeby tego nie było? W jakim sensie nie było?

Dodanie pętli repeat przed samą instrukcją case powoduje że np. po naciśnięciu 1 napis INFORMATYKA wyświetla się bez końca.

Jak bez końca...? Testowałeś w ogóle ten kod? Sprawdziłem bo sam nie dowierzałem, ale wyświetla się raz i nie ma prawa wyświetlić się po raz kolejny jeśli znów nie podasz na wejściu 1, bo przy następnym przejściu pętli ReadLn znów zatrzymuje program aż do podania kolejnej liczby; Dodanie pętli spowoduje wyświetlanie menu i proszenie o podanie cyfry aż do momentu podania 4 - jeśli usuniesz ją - program wykona się tylko raz (i to nawet nie zauważysz, że się wykona bo od razu po podaniu cyfry i wciśnięciu klawisza Enter zakończy działanie);

Jeżeli nie chcesz by bo podaniu cyfry z klawiatury menu znów nie wyświetlało się to wyrzuć przed pętlę odpowiednie instrukcje; Jeśli chcesz, żeby się wyświetlało ale żeby wcześniejsza zawartość konsoli została skasowana - użyj ClrScr z modułu Crt;

1 użytkowników online, w tym zalogowanych: 0, gości: 1