#include void razlomak ( int b1, int i1, int b2, int i2 ); int nzd ( int x, int y ); int nzs ( int x, int y ); void sabiranje ( int b1, int i1, int b2, int i2, int *x, int *y ); void oduzimanje ( int b1, int i1, int b2, int i2, int *x, int *y ); void mnozenje ( int b1, int i1, int b2, int i2, int *x, int *y ); void deljenje ( int b1, int i1, int b2, int i2, int *x, int *y ); void uprosti ( int b, int i, int *x, int *y ); main() { int b1,b2,i1,i2; printf("\n Unesite razlomke :"); scanf("%d %d %d %d",&b1,&i1,&b2,&i2); if(b1*b2*i1*i2) razlomak(b1,i1,b2,i2); else { printf("\n POGRESAN UNOS!\n\a"); getchar(); } return 0; } void razlomak ( int b1, int i1, int b2, int i2 ) { char c; int x,y; printf("\n sabiranje --> + \n"); printf(" oduzimanje --> - \n"); printf(" mnozenje --> * \n"); printf(" deljenje --> / \n"); printf(" uprosti --> ? \n"); printf(" izlaz --> Esc\n\n"); getchar(); for (;;) { printf(" operacija --------> "); c = getchar(); switch (c) { case '+' : sabiranje(b1,i1,b2,i2,&x,&y); uprosti(x,y,&x,&y); if (x) printf("\n\n\n %d/%d + %d/%d = %d/%d\n\n",b1,i1,b2,i2,x,y); else printf("\n\n\n %d/%d + %d/%d = 0\n\n",b1,i1,b2,i2); getchar(); break; case '-' : oduzimanje(b1,i1,b2,i2,&x,&y); uprosti(x,y,&x,&y); if (x) printf("\n\n\n %d/%d - %d/%d = %d/%d\n\n",b1,i1,b2,i2,x,y); else printf("\n\n\n %d/%d - %d/%d = 0\n\n",b1,i1,b2,i2); getchar(); break; case '*' : mnozenje(b1,i1,b2,i2,&x,&y); uprosti(x,y,&x,&y); printf("\n\n\n %d/%d * %d/%d = %d/%d\n\n",b1,i1,b2,i2,x,y); getchar(); break; case '/' : deljenje(b1,i1,b2,i2,&x,&y); uprosti(x,y,&x,&y); printf("\n\n\n %d/%d / %d/%d = %d/%d\n\n",b1,i1,b2,i2,x,y); getchar(); break; case '?' : uprosti(b1,i1,&x,&y); printf("\n\n\n %d/%d = %d/%d , ",b1,i1,x,y); uprosti(b2,i2,&x,&y); printf("%d/%d = %d/%d\n\n",b2,i2,x,y); getchar(); break; case '!': printf("\n\n\n izlaz\n"); return; default : printf("\n\n\n greska pri unosu\n"); break; } } } int nzd ( int x, int y ) { if (x%y) return (nzd(y,x%y)); else return y; } int nzs ( int x, int y ) { return (x*y/nzd(x,y)); } void sabiranje ( int b1, int i1, int b2, int i2, int *x, int *y ) { if (i1 == i2) { *y = i1; *x = b1+b2; } else { *y = nzs(i1,i2); *x = nzs(i1,i2)/i1*b1+nzs(i1,i2)/i2*b2; } } void oduzimanje ( int b1, int i1, int b2, int i2, int *x, int *y ) { if (i1 == i2) { *y = i1; *x = b1-b2; } else { *y = nzs(i1,i2); *x = nzs(i1,i2)/i1*b1-nzs(i1,i2)/i2*b2; } } void mnozenje ( int b1, int i1, int b2, int i2, int *x, int *y ) { *x = b1 * b2; *y = i1 * i2; } void deljenje ( int b1, int i1, int b2, int i2, int *x, int *y ) { *x = b1 * i2; *y = i1 * b2; } void uprosti ( int b, int i, int *x, int *y ) { int n; while ((n = nzd(b,i))!=1) { b/=n; i/=n; } *x = b; *y = i; }