Skocz do zawartości


Close Open
Close Open
- - - - -

Problem z 'ulepszeniem' programu w pascalu


  • Please log in to reply
26 replies to this topic

#21

  • Goście

Napisany 27 November 2006 - 10:13 AM

No jest ok. Nauczyciel mówił że to nie spełnia wymagań i przez całą lekcje myślałem jak tu zamienić to TRUE FALSE na coś innego i mnie olśniło.
Zamiast
Posortowane:= True
napisałem
z:=1
Zamiast
Posortowane:=False
z:=0
a zamiast
until posortowane or j=10
until z=1 or j= 10
i działa :D

Jeszcze raz wielkie dzięki za pomoc!

#22 Wojtek-J

Wojtek-J

    Uczestnik

  • Forumowicze
  • PipPipPipPip
  • 152 Postów:

Napisany 27 November 2006 - 15:30 PM

No wiesz... to dokladnie to samo :P True oznacza 1 a false oznacza 0 :) wiec robisz to samo tylko inaczej zmienna sie nazywa. Jezeli nauczyciel to przyjal a tamtego nie... to wyrazy wspolczucia, ale nie nauczysz sie nic od niego :P

A tak sobie myslalem, ze mozna to jeszcze skrocic... Otoz, w kazdym obiegu zewnetrznej petli (j) wychodzi jeden bombelek na wierzch, w pierwszym obiegu, na pewno najwieksza liczba znajdzie sie na koncu, w drugim obiegu, liczba najwieksza ale mniejsza od tej najwiekszej znajdzie sie na drugim mijscu od konca, wiec petle:
for i:=1 to 9 do
mozna zmienic na:
for i:=1 to 9-j+1 do

teoretycznie powinno dzialac. ;)

#23

  • Goście

Napisany 27 November 2006 - 15:47 PM

Już lepiej nie bede kombinowal... i tak to z "z=1" analizował bardzo szczegółowo (oczywiście widać bylo że zupelnie nie jest pewien czy to jest dobrze zrobione)... musiałem mu wyslać ten program na maila (nigdy oto nie prosi, więc nie zdziwie jak się pewnie kogoś zapyta czy to napewno dobrze jest).
Heh i lepiej żeby nie zaczął szukać pomocy tutaj:P

#24 Wojtek-J

Wojtek-J

    Uczestnik

  • Forumowicze
  • PipPipPipPip
  • 152 Postów:

Napisany 27 November 2006 - 16:00 PM

:D no tak... Ale mówię Ci, sprawdź przynajmniej czy tak jak napisałem działa, bo sam ciekawy jestem.

A co do tej twojej zmiany to jest tak... że żadnej zmiany właściwie nie ma :) Zmienna "z" jest typu całkowitego i zmienna "posortowane" jest rownież typu całkowitego bo bool takim jest. True to synonim dla 1, a False synonim dla 0. Każde wyrażenie nie zwracające 0 jest prawdą, natomiast każde zwracające 0 jest fałszem, stąd "if (1) ; if (5) ; if (4+2) ; albo if (true)" jest zawsze spełnione, natomiast "if (0) ; if (2 - 2) ; if (false)" jest zawsze NIE spełnione.
until z=1 or or j=9
działa tak samo jak
until z or j=9
co z kolei działa tak samo jak
until posortowane or j=9
co również działa tak samo jak
until posortowane=1 or j=9

#25

  • Goście

Napisany 27 November 2006 - 16:42 PM

Po zmianie na for i:=1 to 9-j+1; program dziala nadal poprawnie :) eh widzę że jeszcze muszę się duuuuuzo nauczyć. Ale taką szanse będe mial właściwie dopiero od Października 2007 :/

#26 Wojtek-J

Wojtek-J

    Uczestnik

  • Forumowicze
  • PipPipPipPip
  • 152 Postów:

Napisany 27 November 2006 - 16:56 PM

Przejrzyj ten post w którym dokładnie wyjaśniałem jak na podanym ciągu wykonuje się sortowanie. Zauważysz że po każdym przejściu (czyli dla każdego j) wybombelkowuje jedna wartość na koniec, dla j=1 na sam koniec najwieksza, dla j=2 na drugie od konca miejsce prawie najwieksza i tak dalej. Skro w dla j=3 na miejsce 3 od konca wybombelkuje wartosc ktora juz tam zostanie, a poprzednio dla j=2 wlasciwa wartosc znalazla sie na drugim miejscu od konca a dla j=1 ostatnia, to w momencie gdy j=3 nie ma sensu sprawdzac elementu drugiego od konca i ostatniego, skoro sa na pewno na dobrych miejscach. dlatego chodzimy do 9-j+1.

#27

  • Goście

Napisany 27 November 2006 - 17:36 PM

No nie to akurat rozumiem, ale na daną chwile sam bym nie potrafił tego tak napisać :(




0 Użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników