[C] Dodawanie ułamków - problem ze wskaźnikami

0

Witam. Mam następujący problem. Mam napisać kalkulator ułamków zwykłych. Oto miejsce z którym mam trudność:

 long long int* rozszerzenie(long long int *ulamek1, long long int *ulamek2, long long int* wynik)
{
    long long int nww;
    nww = licz_nww(ulamek1[1], ulamek2[1]);
    *(wynik+0) = ulamek1[0] * nww / ulamek1[1];
    *(wynik+1) = nww;

    return wynik;
}

long long int* dodawanie(long long int* ulamek1, long long int* ulamek2, long long int* wynik)
{
    ulamek1 = rozszerzenie(ulamek1, ulamek2, wynik);
    ulamek2 = rozszerzenie(ulamek2, ulamek1, wynik);
    *(wynik+0) = ulamek1[0] + ulamek2[0];
    *(wynik+1) = ulamek1[1];
    wynik = skracanie(wynik);
    return wynik;

}

long long int* skracanie(long long int* ulamek)
{
    long long int nwd;
    nwd = licz_nwd(ulamek[0], ulamek[1]);
    *(ulamek+0) = ulamek[0]/nwd;
    *(ulamek+1) = ulamek[1]/nwd;

    return ulamek;
}

Nie wklejam całego kodu, bo chyba to byłoby zbyt zagmatwane. Zmienne ulamek1 i ulamek2 zawierają dwa elementy - licznik i mianownik. Funkcja rozszerzenie ma sprowadzać ułamki do wspólnego mianownika. Analizując przejście programu linia po linii, po pierwszym przypisaniu w funkcji dodawanie ulamek1 przyjmuje odpowiednie wartości. Po przypisaniu wartości funckji rozszerzenie do ulamek2, ulamek1 zmienia swoją wartość tak, że jest równy ulamek2. W rezultacie, gdy program ma wykonać działanie np. 1/2+1/3 w wyniku daje nie 5/6, tylko 2/3... Dlaczego tak się dzieje? Jak tego uniknąć?

Mogę zamieścić cały kod. Z góry dziękuję.
Turambar

0

Doszedłem do tego, że do ulamek1 i ulamek2 przypisywana jest ta sama zmienna i to jest chyba problem. Po pierwszym przypisaniu jest OK, ale przy drugim zmieniam wartość tej samej zmiennej wynik. A skoro zmienna ulamek1 wskazuje na zmienną wynik, to wartość ulamek1 również się zmienia.

Temat można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1