pętla w pascal

mathematic

pętla w pascal

Post autor: mathematic »

mam takie zadanie do którego trzeba ułożyć listę kroków:
Algorytm realizujący zabawę w zgadywanie liczby. Wybierzmy zakres: od 0 do 100, komputer losuje liczbę z tego zakresu (trzeba użyć funkcji losowa(n) zwracającej pseudolosową liczbę z przedziału 0 - n-1), a my ją mamy odgadnąć, otrzymując tylko informacje, czy podana liczba jest za mała, czy też za duża. Po wczytaniu liczby algorytm ma więc do wyboru trzy możliwości: trafiona, za mała, za duża.
Na koniec ma byc informacja o ilości prob

Problem jest w tym czy pętla ze sprawdzaniem warunku na początku czy na końcu?
Czyli która wersja jest poprawna z poniższych, proszę o jakieś krótkie uzasadnienie:

1. zaczxnij algorytm

2. losuj n z przedziału (0,101)

3.licznik l:=1

3.podaj typowaną liczbe s

4.Dopóki s<>n wykonuj

jeśli s>n pisz za duza w przeciwnym razie pisz za mala

podaj nowa liczbe s

l:=l+1;

5.wypisz s

6.wypisz l

7.zakoncz algorytm

lub

1. Start

2. zainicjuj generator liczb losowych (randomize)

3. licznik := 0

4. zgadnij := 0

5. liczbalosowa:=losowa(101);

6. wczytaj liczbę od użytkownika i przypisz ja do zgadnij

7. POWTARZAJ

7.1. jesli zgadnij > liczbalosowa wtedy pisznaekran - zaduza

7.2 jesli zgadnij < liczbalosowa wtedy pisznaekran - zamała

7.3 zwiększ licznik

7.4 DOPÓKI zgadnij=liczbalosowa

8.pisznaekran zgadłes

9. pisznaekran "zgadłes w nastepujacej ilosci prob : " licznik
czy w tej pętli wczytywanie liczby nie powinno w pętli a nie przed nią?
Awatar użytkownika
Inkwizytor
Użytkownik
Użytkownik
Posty: 4105
Rejestracja: 16 maja 2009, o 15:08
Płeć: Mężczyzna
Lokalizacja: Poznań
Podziękował: 1 raz
Pomógł: 428 razy

pętla w pascal

Post autor: Inkwizytor »

Wybór petli nie ma znaczenia gdy prawidłowo ustawisz licznik. Wystarczy pamiętać że
repeat ... until wykonuje się zawsze przynajmniej jeden raz nawet gdy warunek wyjścia z pętli jest od razy spełniony, natomiast użycie pętli while... do może nie być nigdy wykonane. Dlatego w pierwszym przypadku licznik przed pętlą musi byc ustawiony na zero, a w drugim przypadku na 1. Tak jak to zrobiłeś

nie podoba mi się ten zapis przy pierwszej wersji: jeśli s>n pisz za duza w przeciwnym razie pisz za mala bo jesli ktoś odgadnie za którymś razem czyli s=n to i tak mu się ten napis wyświetli, chyba że tuż za wyjściem z pętli wrzucisz czyszczenie ekranu wtedy nikt nie zdąży zauważyć tego komunikatu
mathematic

pętla w pascal

Post autor: mathematic »

Czyli mogę użyć tej lub tej; super,dziękuję

A z tym to rzeczywiście racja, powinno być jeśli s>n pisz za duza
jeśli s<n pisz za mała

Czyli pierwsza lista kroków jest ok po za tym jednym mankamentem?

A czy w drugiej liście kroków ten krok - wczytanie liczby od użytkownika nie powinien być tylko i wyłącznie w pętli?

Dziękuję za pomoc
Awatar użytkownika
Inkwizytor
Użytkownik
Użytkownik
Posty: 4105
Rejestracja: 16 maja 2009, o 15:08
Płeć: Mężczyzna
Lokalizacja: Poznań
Podziękował: 1 raz
Pomógł: 428 razy

pętla w pascal

Post autor: Inkwizytor »

1. wydaje się wszystko ok. Ale zawsze w testowaniu wychodzą jakieś drobiazgi
2. wczytanie liczby od uzytkownika nawet MUSI BYĆ w pętli
ODPOWIEDZ