WPROWADZENIE

Aby zamienić ułamek zwykły na dziesiętny, można na przykład:

  • rozszerzyć mianownik do 10, 100, 1000, itd.:

$\frac{1}{4}=\frac{25}{100}=0,25$

$\frac{7}{8}=\frac{875}{1000}=0,875$

$\frac{3}{5}=\frac{6}{10}=0,6$

  • podzielić licznik przez mianownik

Są jednak ułamki zwykłe, których:

  • dzielenie licznika przez mianownik nie ma końca
  • nie da się rozszerzyć mianownika do 10, 100, 1000 …, 

PRZYKŁAD

Ułamek $\frac{2}{11}$ po podzieleniu licznika przez mianownik ma postać: 0,1818181818…

O takich ułamkach mówimy, że:

  • mają rozwinięcie dziesiętne nieskończone,
  • oraz okresem tego rozwinięcia jest powtarzająca się sekwencja cyfr – w przykładzie powyżej okresem jest (18)

KOD W JĘZYKU PYTHON

def zamien(ulamek_zwykly):
    licznik, mianownik = ulamek_zwykly.split("/")
    licznik = int(licznik)
    mianownik = int(mianownik)

    ulamek = licznik / mianownik

    reszta = licznik % mianownik
    reszty_pokaz = {}
    rozwiniecie = []

    while reszta not in reszty_pokaz:
        reszty_pokaz[reszta] = len(rozwiniecie)
        rozwiniecie.append(str(int(10 * reszta / mianownik)))
        reszta = 10 * reszta % mianownik

    powtarza_dlugosc = len(rozwiniecie) - reszty_pokaz[reszta]

    if reszta == 0:
        return str(ulamek)
    else:
        powtarza_sie = "".join(rozwiniecie[reszty_pokaz[reszta]:])
        return f"{ulamek}  ---> okres: {''.join(rozwiniecie[:reszty_pokaz[reszta]])}({powtarza_sie})  liczba cyfr w okresie: {powtarza_dlugosc} "

ulamek_zwykly = str(input("Wpisz ułamek zwykły licznik/mianownik, na przykład 2/3: "))
ulamek = zamien(ulamek_zwykly)
print(ulamek)

⬆️⬆️⬆️ Zobacz w Google Colaboratory


JAK DZIAŁA PROGRAM?

  1. Program definiuje funkcję „zamien„, która przyjmuje argument „ulamek_zwykly” w postaci stringa, np. „2/3”.
  2. Funkcja „zamien” przetwarza string „ulamek_zwykly” na dwie zmienne „licznik” i „mianownik” typu int, używając metody „split()” do rozdzielenia licznika i mianownika, a następnie konwertując je na typ int za pomocą funkcji „int()”.
  3. Następnie oblicza wartość ułamka „ulamek” poprzez podzielenie „licznika” przez „mianownik”. Dalej, oblicza resztę z dzielenia „licznika” przez „mianownik” za pomocą operatora modulo „%” i przypisuje ją do zmiennej „reszta”.
  4. Funkcja inicjuje pusty słownik „reszty_pokaz” i pustą listę „rozwiniecie„.
  5. W pętli while … dopóki „reszta” nie znajduje się w „reszty_pokaz”, program dodaje resztę do słownika „reszty_pokaz” jako klucz, a długość listy „rozwiniecie” jako wartość. 
  6. Następnie dodaje cyfrę przed przecinkiem wynikającej z dzielenia 10 razy „reszta” przez „mianownik” do listy „rozwiniecie” i oblicza nową wartość „reszta”.
  7. Jeśli „reszta” znajduje się już w „reszty_pokaz”, program oblicza długość okresu, liczbę cyfr w okresie oraz ciąg cyfr okresu, a następnie zwraca ułamek wraz z informacją o okresie, liczbie cyfr w okresie i samym okresie.
  8. Jeśli „reszta” wynosi 0, program zwraca tylko wartość ułamka.
  9. Program prosi użytkownika o wprowadzenie ułamka zwykłego i przypisuje go do zmiennej „ulamek_zwykly”.
  10. Program wywołuje funkcję „zamien” z argumentem „ulamek_zwykly” i przypisuje wynik do zmiennej „ulamek”.
  11. Program wyświetla wynik, czyli ułamek wraz z informacją o okresie (jeśli istnieje) i liczbie cyfr w okresie.