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ą?
pętla w pascal
- Inkwizytor
- 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
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
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
pętla w pascal
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
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
- Inkwizytor
- 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
1. wydaje się wszystko ok. Ale zawsze w testowaniu wychodzą jakieś drobiazgi
2. wczytanie liczby od uzytkownika nawet MUSI BYĆ w pętli
2. wczytanie liczby od uzytkownika nawet MUSI BYĆ w pętli