eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPorównywanie ułamków zwykłychRe: Porównywanie ułamków zwykłych
  • Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!plix.pl!newsf
    eed1.plix.pl!wsisiz.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!not-for-mail
    From: qwak <q...@w...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Porównywanie ułamków zwykłych
    Date: Wed, 22 Sep 2010 10:16:08 +0200
    Organization: ATMAN
    Lines: 32
    Message-ID: <i7ce08$bgl$1@node1.news.atman.pl>
    References: <op.vjdmp0xe8x7o78@notebook>
    NNTP-Posting-Host: staticline18681.toya.net.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1285143368 11797 85.89.190.112 (22 Sep 2010 08:16:08
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Wed, 22 Sep 2010 08:16:08 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100826
    Thunderbird/3.0.7
    In-Reply-To: <op.vjdmp0xe8x7o78@notebook>
    Xref: news-archive.icm.edu.pl pl.comp.programming:186958
    [ ukryj nagłówki ]

    W dniu 21.09.2010 11:45, Wojciech "Spook" Sura pisze:
    > Zastanawiam się, w jaki sposób porównywać ułamki zwykłe?
    >
    > Przypuśćmy, że mam dane dwa ułamki, a/b i c/d. Chcę sprawdzić, czy są
    > równe.

    Korzystamy z:
    a/b == c/d <=> a*d == b*c

    Pozostaje kwestia przekraczania zakresów przy mnożeniu. I tu 2 rozwiązania:

    - skorzystać z biblioteki, np. GMP

    - samemu zaimplementować mnożenie:

    Jeśli a, b, c i d masz w N bitowych zmiennych to możesz potraktować je
    jako 2-cyfrowe liczby N/2 bitowe (tj w systemie o podstawie: 2^(N/2)).
    Takie liczby możesz przemnożyć stosując "algorytm szkolny" ("mnożenie
    pisemne", oczywiście w systemie o podstawie 2^(N/2), a nie 10), przy
    czym wynik mnożenia dwóch N/2 bitowych cyfr mieści się na N bitach (więc
    stosujesz N-bitowy typ do obliczeń).
    Całość wymaga 4 mnożeń, kilku dodawań, operacji bitowych...
    Wynik będzie liczbą składającą się z co najwyżej 4ech N/2 bitowych cyfr.
    Takie liczby łatwo porównasz cyfra po cyfrze.

    Jest jeszcze kwestia znaków (liczb ujemnych), tych zgodność możesz
    jednak sprawdzić przed powyższymi obliczeniami. W przypadku zgodności
    możesz liczyć na wartościach bezwzględnych używając N-bitowego typu bez
    znaku.

    --
    Piotr Beling - http://qwak.w8.pl http://warcaby.w8.pl http://bcalc.w8.pl

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: