-
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
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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??
Najnowsze wątki
- 2025-02-17 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-02-17 Chrzanów => Programista NodeJS <=
- 2025-02-17 Warszawa => Node.js / Fullstack Developer <=
- 2025-02-17 Białystok => System Architect (Java background) <=
- 2025-02-17 Białystok => Solution Architect (Java background) <=
- 2025-02-17 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2025-02-17 Gdańsk => PHP Developer <=
- 2025-02-17 Warszawa => Senior ASP.NET Developer <=
- 2025-02-17 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-17 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-02-17 Odśnieżanie samochodu
- 2025-02-17 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-17 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-17 Pompiarze...
- 2025-02-16 PV teraz