-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.onet.pl!not-for-mail
From: Piotr Chamera <p...@p...onet.pl>
Newsgroups: pl.comp.programming
Subject: Re: Porównywanie ułamków zwykłych
Date: Thu, 23 Sep 2010 13:21:38 +0200
Organization: http://onet.pl
Lines: 68
Message-ID: <i7fd85$ndh$1@news.onet.pl>
References: <op.vjdmp0xe8x7o78@notebook>
<7...@g...googlegroups.com>
<op.vjdzjw0f8x7o78@notebook> <i7amcm$gvk$1@news.onet.pl>
<i7f59i$vue$1@news.onet.pl>
NNTP-Posting-Host: public45845.xdsl.centertel.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.onet.pl 1285240901 23985 79.163.179.21 (23 Sep 2010 11:21:41 GMT)
X-Complaints-To: n...@o...pl
NNTP-Posting-Date: Thu, 23 Sep 2010 11:21:41 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.9) Gecko/20100915
Lightning/1.0b2 Thunderbird/3.1.4
In-Reply-To: <i7f59i$vue$1@news.onet.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:186964
[ ukryj nagłówki ]I jeszcze wersja iteracyjna algorytmu (z komentarzami)
i statystyka liczby iteracji.
PS. Nie irytujcie się, jeśli to nikomu nie potrzebne.
Tak mnie dzisiaj naszło na pisanie nawiasów :)
(defun cmp-rational2 (a b c d)
"Porównanie liczb a/b i c/d przy założeniu, że
a, b, c, d dodatnie oraz b i d różne od 0.
Liczby w obliczeniach pośrednich nigdy nie
są większe od wejściowych. Wersja iteracyjna.
Zwracane wartości:
a/b > c/d => T
a/b < c/d => NIL
a/b = c/d => EQUAL"
(do ((sign T) ; albo NIL - oznacza negację wyniku
c1 r1 c2 r2) ; miejsce na wyniki dzielenia i reszty
(NIL) ; pętla bez końca
;(print (list a b c d) nil) ; drukowanie parametrów pośrednich iteracji
(multiple-value-setq (c1 r1) (truncate a b)) ; dzielenie całkowite
z resztą
(multiple-value-setq (c2 r2) (truncate c d)) ; dzielenie całkowite
z resztą
(cond
; jeśli części całkowite się różnią, to można wyznaczyć znak
nierówności
((> c1 c2) (if sign
(return T)
(return NIL))
; zamiast (if...) można dać (return sign)
)
((< c1 c2) (if sign
(return NIL)
(return T))
; zamiast (if...) można dać (return (not sign))
)
; tu już wiemy, że w tej iteracji części całkowite były równe
; jeśli również reszty są zerowe to badane liczby są równe
((and (zerop r1) (zerop r2)) (return 'EQUAL))
; zmiana parametrów dla następnej iteracji
; a=b, b=reszta(a/b), c=d, d=reszta(c/d) i zmiana znaku
(T (progn (setq sign (not sign)
a b
b r1
c d
d r2))))))
Liczba iteracji (po lewej) i liczba wywołań wymagających tylu iteracji
(po prawej). Próba 100 000 000 losowo generowanych porównań.
(0 67751730)
(1 23792799)
(2 6988131)
(3 1159932)
(4 246927)
(5 48544)
(6 9536)
(7 1927)
(8 396)
(9 66)
(10 10)
(11 2)
Następne wpisy z tego wątku
- 23.09.10 11:21 Wojciech \"Spook\" Sura
- 23.09.10 19:30 Remek
- 23.09.10 19:32 Remek
- 23.09.10 22:49 Marcin Biegan
- 24.09.10 00:09 bartekltg
- 24.09.10 02:15 Mariusz Marszałkowski
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO