Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- struct wymierna {
- int licznik;
- int mianownik;
- };
- int NWD(int a, int b) {
- do {
- if (a > b && a != b) {
- a = a - b;
- } else {
- b = b - a;
- }
- } while (a != b);
- return a;
- }
- void roznica(wymierna *a, wymierna *b) {
- a->licznik = a->licznik * b->mianownik;
- b->licznik = b->licznik * a->mianownik;
- a->licznik = a->licznik - b->licznik;
- a->mianownik = a->mianownik * b->mianownik;
- a->licznik = a->licznik / NWD(a->licznik, a->mianownik);
- a->mianownik = a->mianownik / NWD(a->licznik, a->mianownik);
- }
- void suma(wymierna *a, wymierna *b) {
- a->licznik = a->licznik * b->mianownik;
- b->licznik = b->licznik * a->mianownik;
- a->licznik = a->licznik + b->licznik;
- a->mianownik = a->mianownik * b->mianownik;
- a->licznik = a->licznik / NWD(a->licznik, a->mianownik);
- a->mianownik = a->mianownik / NWD(a->licznik, a->mianownik);
- }
- void iloczyn(wymierna *a, wymierna *b) {
- a->licznik = a->licznik * b->licznik;
- a->mianownik = a->mianownik * b->mianownik;
- }
- void iloraz(wymierna *a, wymierna *b) {
- a->licznik = a->licznik * b->mianownik;
- a->mianownik = a->mianownik * b->licznik;
- }
- int main() {
- wymierna a, b;
- char znak;
- a.licznik = 1;
- a.mianownik = 1;
- do {
- scanf("%c", &znak);
- if (znak == 'x'){
- break;
- }
- scanf(" %i %i\n", &b.licznik, &b.mianownik);
- if (znak == '+') {
- suma(&a, &b);
- } else if (znak == '*') {
- iloczyn(&a, &b);
- } else if (znak == '/') {
- iloraz(&a, &b);
- } else if (znak == '-') {
- roznica(&a, &b);
- }
- } while (true);
- a.licznik = a.licznik / NWD(a.licznik, a.mianownik);
- a.mianownik = a.mianownik / NWD(a.licznik, a.mianownik);
- printf("%d/%d", a.licznik, a.mianownik);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement