Sumowanie ulamkow zwyklych

0

Program w C, mógłby ktoś mnie nakierować?
Napisz program, w którym ułamki zapisane są w postaci struktur:
struct ulamek{
int licznik;
int mianownik;
};
zaimplementuj operację dodawania ułamków (pamiętaj o konieczności obliczenia NWD), Program powinien pobierać niezerową liczbę naturalną n >= 2 i wyświetla wartość sumy
1/2 + 2/3 + 3/4 +4/5 + 5/6+ ... + (n-1)/n
np.
3
7/6

5
163/60

2
typedef struct Fraction {
    int numerator, denominator;
} Fraction;

Fraction fractionAdd(Fraction a, Fraction b);
Fraction fractionMul(Fraction a, Fraction b);
Fraction fractionCommon(Fraction a);
Fraction fractionMake(int numerator, int denominator);
Fraction fractionMakeFromDouble(double x);
int fractionScanFrom(FILE *f, Fraction* a);
void fractionPrintTo(FILE* f);
0

Zacznij tak:

struct ulamek {
    int licznik;
    int mianownik;
};

int gcd (int a, int b) {
    while (b != 0) {
        int c = a % b;
        a = b;
        b = c;
    }
    return a;
}

void showUlamek(struct ulamek f) {
    printf("%d / %d\n", f.licznik, f.mianownik);
}

struct ulamek add(struct ulamek f1, struct ulamek f2) {
     int l =  f1.licznik * f2.mianownik + f2.licznik * f1.mianownik;
     int m =  f1.mianownik * f2.mianownik;
     int d = gcd(l, m);  
     struct ulamek out = {l / d, m / d};
     return out; 
}

A tę pętle, już łatwo dopisać...

0

Radzę przekształcić to na
(n-1) - (1/2 +1/3 +1/4 ... +1/n)
Znacznie łatwiej się oblicza, to co w nawiasach nazywa się ciąg harmoniczny - zbadany wzdłuż i wszerz.

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